我试图在游戏完成后重新启动相同级别的游戏。我正在使用警报视图在完成时显示。 我在AlertView(End和PlayAgain)中使用了2个按钮。一旦触及结束,它应该结束工作正常。问题是一旦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");
}
}
我试图再次加载我的gamecene。这是正确的做法。
请帮我解决这个问题。
先谢谢,
答案 0 :(得分:3)
同样的事情发生在我身上。对我来说,事实证明我有一个每帧发生的调度程序,它会在消息实际出现之前发生两次。我只是用过:
[self unschedule:@selector(aFunction:)];
这个未安排的选择器因此不会注册两次。我希望这可以帮助别人!如果不是这种情况,您可以尝试:
[[CCDirector sharedDirector] pause];
希望暂停场景以阻止它再次呼叫警报。
答案 1 :(得分:0)
据我所知,您的代码加载新(同一场景)没有任何问题。这也是我用来再次切换到同一场景的方法。
您的“else if”语句中的代码是否实际命中?如果在else if块中放置断点会发生什么?
答案 2 :(得分:0)
UR代码完全正确但是如果你使用,
[[Director sharedDirector] replaceScene:gameScene];
此代码所以场景是替换你无法返回。如果你想返回使用push和pop这样的话。
[[Director sharedDirector] pushScene:[calssName scene]];