【问题标题】:How to call method from myScene.m in AppDelegate?如何从 AppDelegate 中的 myScene.m 调用方法?
【发布时间】:2014-11-07 03:55:48
【问题描述】:

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

- (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 调用方法来显示恢复按钮并要求在恢复游戏之前按下它?

【问题讨论】:

    标签: ios7 sprite-kit


    【解决方案1】:

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

    在 AppDelegate 中,使用以下方法将通知“发布”到通知中心。然而,这还没有结束,因为您的 GameScene 类必须“观察/等待”这些方法 被称为。

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

    现在您添加了一个调用handleNotification 方法的观察者。如果你还没猜到,你需要在你的gameScene(或对应的类)中实现这个方法。我会这样做:

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

    希望这会有所帮助!

    【讨论】:

      【解决方案2】:

      试试这样的:

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

      【讨论】:

        猜你喜欢
        • 2021-03-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-11-18
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多