在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
答案 0 :(得分:1)
它应该正确隐藏在您的代码中。但是,如果在游戏循环中调用此updateLives,则可能是您看到它未被隐藏的原因是前一帧的内容。试试
1)创建heart1,heart2,heart3一次
2)在更新中,不要创建精灵。即只保留......代码中的其他部分。
希望它有所帮助。