2013-07-13 4 views
1

Я пытаюсь изменить текст CCLabelTTF в cocos2d xcode (цель-c). Я устанавливаю ярлык, как это:Cocos2d getChildByTag Не возвращающийся спрайт

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 является только высота и ширина экрана и CNT, если целое число, которое идет вверх каждый раз, когда от 1 до 13. Затем около 5 секунд после того, как метка создается I получите следующее:

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

также я буду поврежден. Он работал только с вашими изменениями. Однако я не получил компиляционную ошибку. –

Смежные вопросы