0

複数のレベルのゲームで再利用する予定のクラスがあり、ラベルテキストの更新に問題があります。基本的に、私はこのクラスを15レベルのゲームで再利用しようとしています。したがって、最初はラベルの値が1であり、レベルがクリアされた後に1ずつ増加し、更新されたテキストでクラスが再ロードされます。これが私のラベルを更新しようとしている方法です:

GameScene *stage= [stage node];
[[CCDirector sharedDirector]replaceScene:stage];

//stageNo is an integer that I pass to the label as it's text value. As long as its less that 15, it should go inside that code block.
if(stageNo < 15)
{
    stageNo = stageNo + 1;
    [stage.layer.stageLabel setString:[NSString stringWithFormat:@"%i", StageNo]];
}

これは1回だけ機能するため、ラベルのデフォルト値が1の場合、クラスがリロードされた後は2になります。その後は2のままになります。したがって、私の質問は、クラスが1ずつインクリメントするようにリロードしましたか?

4

2 に答える 2

1

これは間違いなくスコープの問題のようです。あなたのコメントによると、あなたは正しいことをし、stageLabelと呼ばれるプロパティを作成しました。唯一の問題は、最初に設定したときに保持されていないことです。使用する代わりに

stageLabel = [CCLabelTTF labelWithString:[NSString stringWithFormat:@"%@", stageNo] fontName:@"Arial" fontSize:18];

あなたが使用する必要があります

self.stageLabel = [[CCLabelTTF alloc] initWithString:[NSString stringWithFormat:@"%@", stageNo] fontName:@"Arial" fontSize:18];
于 2013-02-11T08:07:33.430 に答える
1

init() で UILabel 宣言を stringWithFormat から分離します。その後、動作するはずです

于 2013-02-11T07:55:11.800 に答える