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

完全相同的事情发生在我身上。对我来说,事实证明我有一个每帧都发生的调度程序,它会在消息实际出现之前发生两次。我只是使用:

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

这取消了选择器的计划,因此它不会注册两次。我希望这可以帮助别人!如果不是这种情况,您可以尝试:

[[CCDirector sharedDirector] pause];

希望暂停现场以阻止它两次发出警报。

于 2010-09-30T20:50:21.823 回答
0

据我所知,您的代码加载新的(相同的场景)没有任何问题。这也是我用来再次切换到同一场景的方法。

您在“else if”语句中的代码是否真的命中了?如果在 else if 块中放置断点会发生什么?

于 2009-04-14T08:25:24.283 回答
0

你的代码是完全正确的但如果你使用,

[[Director sharedDirector] replaceScene:gameScene];

这段代码所以场景是替换你不能返回。如果您想返回,请像这样使用 push 和 pop。

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