2013-07-13 42 views
1

我正在嘗試更改cocos2d xcode(objective-c)中的CCLabelTTF的文本。我設置標籤這樣的:Cocos2d getChildByTag不返回Sprite

CCLabelTTF *progressLBL = [CCLabelTTF labelWithString:@"connecting..." fontName:@"Marker Felt" fontSize:10]; 
progressLBL.position = ccp( width + 4, (s.height) - hight - 15); 
CCMenu *menuHolder = [CCMenu menuWithItems:publishingLinesButton , nil]; 
[self addChild:progressLBL z:10 tag:cnt]; 

s是屏幕的只是HIGHT和寬度和CNT如果從標籤創建我約5秒鐘後1〜13。然後,每次上升的整數得到它是這樣的:

CCLabelTTF *progressLBL = (CCLabelTTF *)[self getChildByTag:[dataInfo objectAtIndex:0]]; 
progressLBL.string = @"Updated"; 

dataInfo是一個數組,索引0處的對象是一個整數。但是,當我運行此代碼標籤不會更改。我也試過:

CCLabelTTF *progressLBL = (CCLabelTTF *)[self getChildByTag:4]; 

但仍然標籤沒有改變。

謝謝,對不起,浪費你的時間,如果這是超級簡單的東西。

回答

1

事實是,Objective-C數組包含對象,它不能包含基本類型。標記參數是一個整數,而你傳遞的是一個對象(可能你得到了一個編譯器警告)。我想,對象是的NSNumber,所以你應該把它的值調用的intValue訪問:

CCLabelTTF *progressLBL = (CCLabelTTF *)[self getChildByTag:[dataInfo objectAtIndex:0].intValue ]; 

與較新的編譯器語法可以翻譯如下:

CCLabelTTF *progressLBL = (CCLabelTTF *)[self getChildByTag: dataInfo[0].intValue ]; 
+0

好我會被馴服。它只適用於你的改變。雖然我沒有收到編譯錯誤。 –