我必须在游戏中展示palyers生活。每当玩家击中错误的敌人时,生命就会减少。默认生命是5。
我的代码如下
首先我在游戏中声明这个
static int lifes=5;
CCLabel _lifes;
然后在代码底部的方法如下
public void showLable(CCLabel _lifes){
if(_lifes != null){
this.removeChild(_lifes,true);
}
_lifes = CCLabel.makeLabel("" + lifes, "Verdana", 20);
_lifes.setColor(ccColor3B.ccbrown);
_lifes.setPosition(winSize.width/2,(winSize.height/2));
addChild(_lifes,3)
}
然后我写了这个条件,玩家击中了错误的敌人
lifes--;
showLable(_lifes);
1)一切正常,标签显示,标签减少,但标签不会出现,直到玩家击中错误的敌人,因为你看到我给了默认值5,标签出现在玩家点击后错误的敌人,即从4开始。
2)另一个主要问题是显示的标签显示时没有删除以前的值。对于前者生命是默认的5。当游戏开始时显示图5。当生命减少时,生命值应为4,所以在我的游戏中,4本身就是5。 然后生命被放置在3或2或1的相同数字上。所有的数字都显示在彼此上。现在我想你了解我
提前致谢
答案 0 :(得分:0)
1)检查您在游戏初始化后是否在游戏开始时调用showLable(_lifes);
,因此标签显示的值为5.
2)我不太确定,但 CCLabel 应扩展 CCSprite ,因此有一个setVisible方法。 你可能会尝试类似的东西:
if(_lifes != null){
_lifes.setVisible(false);
this.removeChild(_lifes,true);
}
我只找到了c ++ api参考版本: http://www.cocos2d-x.org/reference/native-cpp/d4/de7/classcocos2d_1_1_c_c_sprite.html