如何从AppDelegate中的myScene.m调用方法?

时间:2014-11-07 03:55:48

标签: ios7 sprite-kit

所以我知道通过使用这段代码,当我进入后台时我可以暂停游戏,并在我重新进入游戏时恢复。

- (void)applicationWillResignActive:(UIApplication *)application
{
 // pause sprite kit
 SKView *view = (SKView *)self.window.rootViewController.view;
 view.paused = YES;
}

- (void)applicationDidBecomeActive:(UIApplication *)application
{
 // resume sprite kit
 SKView *view = (SKView *)self.window.rootViewController.view;
 view.paused = NO;
}

使用上面的代码,游戏将在重新进入应用程序后自动恢复。 如何从myScene.m内的applicationDidBecomeActive调用方法来显示恢复按钮并要求在恢复游戏之前按下它?

2 个答案:

答案 0 :(得分:1)

您可以使用NSNotifications。它们是实现在类之间发送通知的最简单和最好的方法之一,例如pause方法。

在AppDelegate中,使用以下方法发布'通知通知中心。然而,这并不是结束,因为你的GameScene课程必须是观察/等待'对于这些方法 被称为。 appdelegate

要添加观察者,请在GameScene类的initWithSize方法中调用此方法(或者您想要调用方法的类)。 GameScene notification observer

现在您添加了一个调用handleNotification方法的Observer。如果您还没有猜到,则需要在gameScene(或相应的类)中实现此方法。我会做这样的事情:

handleNotification method

notification参数是在AppDelegate中调用的通知的名称。您可以在应用代理中放置其他(或其他)通知名称,例如resumeGame。请记住,对于您发布的每个通知,您需要拥有该通知的观察者,然后是在观察到通知时调用的选择器。在您的方案中,您可能希望在处理通知时弹出一个恢复按钮。这样,您可以从委托中调用所需的任何选择器/方法。祝你好运!

希望这有帮助!

答案 1 :(得分:0)

尝试这样的事情:

- (void)applicationDidBecomeActive:(UIApplication *)application
{
 // resume sprite kit
 SKView *view = (SKView *)self.window.rootViewController.view;
 view.paused = NO;
 MyScene *scene = (MyScene *)view.scene;
 [scene showResumeButton];
}