我正在尝试在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];
但标签仍然没有改变。
谢谢,对不起浪费你的时间,如果这是简单的晚餐。
答案 0 :(得分:1)
事实是,Objective-C数组包含对象,它不能包含基本类型。 tag参数是一个整数,而你正在传递一个对象(可能你有一个编译器警告)。我想对象是 NSNumber ,所以你应该把它的值调用 intValue 访问器:
CCLabelTTF *progressLBL = (CCLabelTTF *)[self getChildByTag:[dataInfo objectAtIndex:0].intValue ];
使用较新的编译器语法可以这样翻译:
CCLabelTTF *progressLBL = (CCLabelTTF *)[self getChildByTag: dataInfo[0].intValue ];