CCLOG没有显示

时间:2012-08-09 12:10:17

标签: objective-c ios cocos2d-iphone tags box2d-iphone

我已经编写了一个代码,用于在释放鼠标点时使用CCLog显示精灵的精确位置。下面是Sprite.mm类和ccTouchesEnded方法(位于HelloWorldLayer.mm类中)。 CCLog未显示该消息。

Sprite.mm:

-(id)addSprite:(CCLayer *)parentLayer
                     inWorld:(b2World *)world
{
PhysicsSprite *aSprite = [PhysicsSprite spriteWithFile:@"spriteIm.png"];

aSprite.tag = 1;
[parentLayer addChild:aSprite];

b2BodyDef spriteBodyDef;
spriteBodyDef.userData = aSprite;
spriteBodyDef.type = b2_dynamicBody;
CGSize s = [CCDirector sharedDirector].winSize;
spriteBodyDef.position = [Convert toMeters:ccp(s.width * 0.25,s.height-400)];
b2FixtureDef fixtureDef;
fixtureDef.density = 0.01;
b2CircleShape circleShape;
circleShape.m_radius = aSprite.contentSize.width/2 / PTM_RATIO;
fixtureDef.shape = &circleShape;

spriteBody = world->CreateBody( &spriteBodyDef );
spriteFixture = spriteBody->CreateFixture( &fixtureDef );

[aSprite setPhysicsBody:spriteBody];

return aSprite;
}

ccTouchesEnded:

- (void)ccTouchesEnded:(NSSet *)touches withEvent:(UIEvent *)event
{

if (mouseJoint)
{
    for(b2Body *b = world->GetBodyList(); b; b=b->GetNext()) {
        if (b->GetUserData() != NULL) {
            CCSprite *mySprite = (CCSprite *)b->GetUserData();
            if (mySprite.tag == 1) {
                CGPoint spritePosition = mySprite.position;
                CCLOG(@"the sprite position is x:%0.2f, y:%0.2f", spritePosition.x, spritePosition.y);
            }
        }
    }        

    world->DestroyJoint(mouseJoint);
    mouseJoint = NULL;
}
}

我觉得问题在于我访问标签的方式,不太确定。请帮忙。

1 个答案:

答案 0 :(得分:1)

在我看来,可能会发生两件事。

  1. 没有联系到CCLOG。这可能是因为精灵标签= 1未设置或您想要关注的对象未与b2Body链接。检查您到达CCLOG的断点

  2. 用NSLog替换CCLOG。如果它有效,那么你没有定义COCOS2D_DEBUG,或者是0.验证你的构建设置。

  3. \\
    /*
     * if COCOS2D_DEBUG is not defined, or if it is 0 then
     *  all CCLOGXXX macros will be disabled
     *
     * if COCOS2D_DEBUG==1 then:
     *      CCLOG() will be enabled
     *      CCLOGERROR() will be enabled
     *      CCLOGINFO() will be disabled
     *
     * if COCOS2D_DEBUG==2 or higher then:
     *      CCLOG() will be enabled
     *      CCLOGERROR() will be enabled
     *      CCLOGINFO() will be enabled 
     */
    #if !defined(COCOS2D_DEBUG) || COCOS2D_DEBUG == 0
    #define CCLOG(...) do {} while (0)
    #define CCLOGINFO(...) do {} while (0)
    #define CCLOGERROR(...) do {} while (0)
    
    #elif COCOS2D_DEBUG == 1
    #define CCLOG(...) NSLog(__VA_ARGS__)
    #define CCLOGERROR(...) NSLog(__VA_ARGS__)
    #define CCLOGINFO(...) do {} while (0)
    
    #elif COCOS2D_DEBUG > 1
    #define CCLOG(...) NSLog(__VA_ARGS__)
    #define CCLOGERROR(...) NSLog(__VA_ARGS__)
    #define CCLOGINFO(...) NSLog(__VA_ARGS__)
    #endif // COCOS2D_DEBUG