Cocos2d getChildByTag不返回精灵

时间:2013-07-13 21:51:25

标签: objective-c cocos2d-iphone cclabelttf

我正在尝试在cocos2d xcode(objective-c)中更改CCLabelTTF的文本。我正在设置这样的标签:

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只是屏幕的高度和宽度,如果一个整数每次从1增加到13,则为cnt。然后在创建标签后大约5秒钟,我得到它:

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

dataInfo是一个数组,索引0处的对象是一个整数。但是,当我运行此代码时,标签不会更改。我也尝试过:

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

但标签仍然没有改变。

谢谢,对不起浪费你的时间,如果这是简单的晚餐。

1 个答案:

答案 0 :(得分:1)

事实是,Objective-C数组包含对象,它不能包含基本类型。 tag参数是一个整数,而你正在传递一个对象(可能你有一个编译器警告)。我想对象是 NSNumber ,所以你应该把它的值调用 intValue 访问器:

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

使用较新的编译器语法可以这样翻译:

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