1

我必须在我的游戏中展示玩家的生活。每次玩家击中错误的敌人,生命就会减少。默认生命是 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 相同的数字上。所有数字相互显示。现在我想你理解我了

提前致谢

4

1 回答 1

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

于 2013-03-08T19:56:48.997 回答