0

ゲームが完了したら、同じレベルのゲームを再開しようとしています。フィニッシュ時に表示するアラートビューを使用しています。AlertView で 2 つのボタン (End と PlayAgain) を使用しています。最後に触れると、正常に動作しているはずです。問題は、playAgain がタッチされると、AlertView がもう一度表示されますが、ゲームを再起動する必要があります。AlertView のボタン インデックスのコードは次のとおりです。

-(void)alertView :(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex
    {
    if(buttonIndex==0){
        exit(0);
        NSLog(@"exit");
    }
    else if(buttonIndex==1){

       // [self retain];
        GameScene *gameScene = [GameScene node];
        [[Director sharedDirector] replaceScene:gameScene];

        NSLog(@"Play Again");
    }
}

ここで、ゲームシーンをもう一度ロードしようとしています。それは正しい方法ですか?

これについて私を助けてください。

前もって感謝します、

4

3 に答える 3

3

まったく同じことが私に起こっていました。私にとっては、フレームごとに発生するスケジューラーがあり、メッセージが実際に表示される前に2回発生することが判明しました。私は単に使用しました:

[self unschedule:@selector(aFunction:)];

これにより、セレクターがスケジュール解除されたため、2 回登録されませんでした。これが誰かに役立つことを願っています!そうでない場合は、次のことを試してみてください。

[[CCDirector sharedDirector] pause];

シーンを一時停止して、アラートが 2 回呼び出されないようにすることを期待しています。

于 2010-09-30T20:50:21.823 に答える
0

私が見る限り、新しい (同じシーン) をロードするコードに問題はありません。これは、同じシーンに再び切り替えるために使用している方法でもあります。

「else if」ステートメントのコードは実際にヒットしていますか? else if ブロックにブレークポイントを配置するとどうなりますか?

于 2009-04-14T08:25:24.283 に答える
0

UR コードは完全に正しいですが、使用する場合は、

[[Director sharedDirector] replaceScene:gameScene];

このコードなので、シーンは置き換えられます。元に戻すことはできません。戻りたい場合は、このようにプッシュとポップを使用します。

[[Director sharedDirector] pushScene:[calssName scene]];
于 2011-11-10T06:32:23.407 に答える