0

在一个 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
    {

    }         
}

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

4

1 回答 1

1

它应该从您的代码中正确隐藏。然而,如果这个 updateLives 在游戏循环中被调用,可能你看到它没有像你预期的那样被隐藏的原因是前一帧的心脏。尝试

1) 一次创建heart1、heart2、heart3

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

希望能帮助到你。

于 2012-07-18T20:05:26.690 回答