标签覆盖标签,同时在cocos2d android中显示健康标签

标签覆盖标签,同时在cocos2d android中显示健康标签,android,cocos2d-iphone,cocos2d-android,Android,Cocos2d Iphone,Cocos2d Android,我必须在我的游戏中展示帕耶的生活。每次玩家击错敌人,生命值就会减少。默认生命值为5 我的代码如下 首先,我在我的游戏层中声明这一点 static int lifes=5; CCLabel _lifes; 然后在代码的底部有一个如下所示的方法 public void showLable(CCLabel _lifes){ if(_lifes != null){ this.removeChild(_lifes,true); } _li

我必须在我的游戏中展示帕耶的生活。每次玩家击错敌人,生命值就会减少。默认生命值为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相同的数字上。所有的数字都显示在对方身上。现在我想你明白我的意思了

提前感谢

1)检查您的呼叫是否可显示(\u lifes)在初始化后的游戏开始时,因此标签显示为值5

2) 我不是很确定,但是CCLabel应该扩展CCSprite,因此有一个setVisible方法。 您可以尝试以下方法:

    if(_lifes != null){
        _lifes.setVisible(false);
        this.removeChild(_lifes,true);
    }

我只找到C++ API参考版本:


我想你是在打电话给showLable(\u lifes)在初始化后的游戏开始时,因此标签显示为值5。你…吗?对于2)我真的不明白sry:/不,5根本不显示,它直接从4开始。在总共5次生命中,当一次生命结束时,标签显示为4次(即剩余4次生命)。我想要的是,5将显示为默认值从游戏开始本身。谢谢你,现在我明白了,我只需要写一个可展示的(_lifes);在比赛开始时。但我仍然面临着第二个问题……请帮我解决其中一个问题,它不起作用……我认为应该有一些方法来清除旧的生命值并更新为新的价值……好吧,你不需要清除旧的价值,因为你正在从头开始重新创建新的标签。。。也许您可以避免重新创建和更改值(难道没有“setString”方法吗?if(life!=null){this.removeChild(life,true);}是的,因为它不起作用,所以我正在考虑其他方法,我无能为力。我得到了答案。只需替换lifes--;to lifes=lifes-1;