cocos2d:CCsprite setVisible方法不起作用

时间:2012-07-18 19:50:53

标签: iphone ios cocos2d-iphone

在cocos 2d游戏中,用户3心脏精神更新英雄的生活。如果英雄失去了一个生命......应该隐藏一颗心。

我使用下面的代码,但它无法正常工作。请帮助我。

- (void)updateLives {
    int i = _lives;
    [self livess:(int)i];
}

- (void)livess:(int)ii { 

    CGSize winSize = [CCDirector sharedDirector].winSize;
    heart1=[CCSprite spriteWithFile:@"heart.png"];
    heart2=[CCSprite spriteWithFile:@"heart.png"];
    heart3=[CCSprite spriteWithFile:@"heart.png"];
    [heart1 setPosition:ccp(winSize.width/2*1.3, winSize.height * 0.9)];
    [self addChild:heart1 z:0];
    [heart2 setPosition:ccp(winSize.width/2*1.1, winSize.height * 0.9)];
    [self addChild:heart2 z:0];
    [heart3 setPosition:ccp(winSize.width/2*0.9, winSize.height * 0.9)];
    [self addChild:heart3 z:0];


    if (ii==3) {

        NSLog(@"%d",ii);
    }
    else if (ii==2)
    {
        NSLog(@"%d",ii);

        [heart3 setVisible:NO];

    } else if (ii==1)
    {

        NSLog(@"%d",ii);

        [heart3 setVisible:NO];
        [heart2 setVisible:NO];
    }
    else
    {

    }         
}

注意:在上面的代码中,.nlog正在打印正确的值..例如1,2

1 个答案:

答案 0 :(得分:1)

它应该正确隐藏在您的代码中。但是,如果在游戏循环中调用此updateLives,则可能是您看到它未被隐藏的原因是前一帧的内容。试试

1)创建heart1,heart2,heart3一次

2)在更新中,不要创建精灵。即只保留......代码中的其他部分。

希望它有所帮助。