1

我正在尝试在 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];

但是标签仍然没有改变。

谢谢,如果这是非常简单的事情,很抱歉浪费您的时间。

4

1 回答 1

1

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

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

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

CCLabelTTF *progressLBL = (CCLabelTTF *)[self getChildByTag: dataInfo[0].intValue ];
于 2013-07-14T00:56:28.310 回答