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 は画面の高さと幅であり、cnt は 1 から 13 までの整数の場合です。ラベルが作成されてから約 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 に答える