2013-03-08 120 views
1

我必須在我的遊戲中顯示palyers的生命。每一個玩家擊中了錯誤的敵人靜物時間decrease.the默認靜物是5標籤覆蓋標籤,同時在cocos2d中顯示健康標籤android

我的代碼如下

首先我在gamelayer聲明此

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

我猜你是調用'showLable(_lifes);'在你的遊戲中它的初始化開始後,所以標籤顯示值爲5.你呢?對於2)我真的不明白:/ – Guian 2013-03-08 18:21:09

+0

不,5沒有顯示出來,它直接從4開始。總共有5種生命,當一個生命消失時,標籤顯示爲4(這意味着剩下4個生命)。我想要的是,5從遊戲開始本身顯示爲默認值。謝謝 – 2013-03-08 18:41:31

+0

現在我明白了,我只需要寫showLable(_lifes);在比賽開始時。但我仍然遭受第二個問題..請幫我 – 2013-03-08 18:48:28

回答

0

1)檢查您是在它的初始化後,遊戲開始呼籲showLable(_lifes);

感謝,所以標籤顯示了價值5

2 )我不太確定,但是CCLabel應擴展一個CCSprite,因此有一個setVisible方法。 您可以嘗試類似:

我只找到了C++ API參考版本: http://www.cocos2d-x.org/reference/native-cpp/d4/de7/classcocos2d_1_1_c_c_sprite.html

+0

爲2)一,這沒有工作......我認爲應該有一些方法來清除生命的舊價值和更新到新的價值.... ... – 2013-03-08 20:11:50

+0

以及你不應該需要清除舊的值,因爲你從頭開始重新創建一個新標籤......也許你可以避免重新創建和更改值(是不是有'setString'方法? – Guian 2013-03-08 20:52:37

+0

if (life!= null){ this.removeChild(life,true); } – 2013-03-09 07:49:28