在应用启动/退出时暂停Spritekit游戏。.iOS8

哈莫比

我已经阅读了有关该主题的所有内容,但仍然无法弄清我的问题。我尝试在appdelegate的每个区域暂停游戏

func applicationWillResignActive(application: UIApplication!) {
    NSNotificationCenter.defaultCenter().postNotificationName("pauseGameScene", object: self)
}

func applicationDidEnterBackground(application: UIApplication!) {
    NSNotificationCenter.defaultCenter().postNotificationName("pauseGameScene", object: self)
}

func applicationWillEnterForeground(application: UIApplication!) {
    NSNotificationCenter.defaultCenter().postNotificationName("pauseGameScene", object: self)
}

func applicationDidBecomeActive(application: UIApplication!) {
    NSNotificationCenter.defaultCenter().postNotificationName("pauseGameScene", object: self)
}

在我的控制器中:

override func viewDidLoad() {
    NSNotificationCenter.defaultCenter().addObserver(self, selector: "pauseGame:", name: "pauseGameScene", object: nil)
}

func pauseGame(){
    self.skView.paused = true
    self.skView.scene!.paused = true
}

我知道pauseGame可以用,因为如果我在场景中使用按钮切换它,它将停止游戏。即使我在将skview和场景加载到控制器中后立即暂停它们,游戏也不会在启动时暂停。在游戏中暂停游戏很容易。但是由于某种原因,每当我退出并恢复该应用程序时,该游戏便会自行取消暂停。

我注意到如果我受到黑客攻击并使用某种延迟。.我可以使它工作。但是显然这是非常愚蠢的。我只需要知道游戏在哪里暂停即可!

func delay(delay:Double, closure:()->()) {
    dispatch_after(
        dispatch_time(
            DISPATCH_TIME_NOW,
            Int64(delay * Double(NSEC_PER_SEC))
        ),
        dispatch_get_main_queue(), closure)
}

func pauseGame(sender: UIButton!){

    delay(2) {
        println("blah")
        self.skView.paused = true
        self.skView.scene!.paused = true
    }
}
0x141E

这是一种从后台模式返回后保持视图暂停的方法。

Xcode 7(有关Xcode 8的说明,请参见下文)

在情节提要中,

1)将视图的类更改为MyView

在视图控制器中,

2)用一个名为stayPaused的布尔值定义一个SKView子类

class MyView: SKView {
    var stayPaused = false

    override var paused: Bool {
        get {
            return super.paused
        }
        set {
            if (!stayPaused) {
                super.paused = newValue
            }
            stayPaused = false
        }
    }

    func setStayPaused() {
        if (super.paused) {
            self.stayPaused = true
        }
    }
}

3)将视图定义为MyView

4)添加一个通知程序来设置stayPaused标志

class GameViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()

        if let scene = GameScene.unarchiveFromFile("GameScene") as? GameScene {
            // Configure the view.
            let skView = self.view as MyView

            NSNotificationCenter.defaultCenter().addObserver(skView, selector:Selector("setStayPaused"), name: "stayPausedNotification", object: nil)

在应用程序委托中,

5)发布通知以设置应用程序处于活动状态时的停留暂停标志

func applicationDidBecomeActive(application: UIApplication) {
    NSNotificationCenter.defaultCenter().postNotificationName("stayPausedNotification", object:nil)
}

Xcode 8

在情节提要中,

1)将视图的类别从更改SKViewMyView

在视图控制器中,

2)SKView使用布尔值定义一个子类stayPaused

class MyView: SKView {
    var stayPaused = false

    override var isPaused: Bool {
        get {
            return super.isPaused
        }
        set {
            if (!stayPaused) {
                super.isPaused = newValue
            }
            stayPaused = false
        }
    }

    func setStayPaused() {
        if (super.isPaused) {
            self.stayPaused = true
        }
    }
}

3)将视图定义为MyView

4)添加一个通知程序来设置stayPaused标志

class GameViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()

        if let view = self.view as! MyView? {
            NotificationCenter.default.addObserver(view, selector:#selector(MyView.setStayPaused), name: NSNotification.Name(rawValue: "stayPausedNotification"), object: nil)

在应用程序委托中,

5)发布通知以设置应用程序处于活动状态时的停留暂停标志

func applicationDidBecomeActive(_ application: UIApplication) {
    // Restart any tasks that were paused (or not yet started) while the application was inactive. If the application was previously in the background, optionally refresh the user interface.
    NotificationCenter.default.post(name: NSNotification.Name(rawValue: "stayPausedNotification"), object: nil)
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

SpriteKit自动恢复并自动暂停iOS8

来自分类Dev

ios8 avfoundation相机启动时冻结

来自分类Dev

SpriteKit + iOS8。SpriteKit是否支持“烘焙”渲染结果?

来自分类Dev

iOS8的SpriteKit中EXC_BAD_ACESS崩溃

来自分类Dev

应用中的LocalStorage在iOS8中重新启动时被清除

来自分类Dev

应用中的LocalStorage在iOS8中重新启动时被清除

来自分类Dev

iOS8中的可行通知无法打开应用

来自分类Dev

ASIHTTPRequest使ios8上的应用程序崩溃

来自分类Dev

iOS8:在应用之间共享通用文件

来自分类Dev

iOS8应用内购买收据验证

来自分类Dev

iOS8。照片应用程序错误?

来自分类Dev

无法在新的ios8中运行我的cordova应用

来自分类Dev

应用仅在特定设备ios8中崩溃

来自分类Dev

在iOS8中进行应用内购买

来自分类Dev

IOS8应用程序图标提交失败

来自分类Dev

当showsScopeBar = YES时,iOS8上的UISearchBar高度

来自分类Dev

支持iOS7和iOS8时的故事板启动图像

来自分类Dev

iOS8:退出应用程序后不久,出现蓝色条“正在使用您的位置”

来自分类Dev

PHAsset,应用重新启动后如何检索特定的PHAsset对象(ios8照片)

来自分类Dev

从iOS8自定义键盘启动包含应用程序

来自分类Dev

为什么我的更新后的应用程序仅在IOS8上启动时崩溃?

来自分类Dev

在iOS8工作期间在iOS7上Spritekit SKPhysicsBody崩溃

来自分类Dev

仅在iOS8中将应用锁定为纵向模式时,UIAlertView变为横向

来自分类Dev

iOS7到iOS8应用程序文件的迁移

来自分类Dev

装有IOS8的IOS尺寸的iPhone应用程序的iPad

来自分类Dev

使用CLLocationManager并针对ios7构建的应用程序将在ios8上运行?

来自分类Dev

更新iOS5应用以使用自动布局和iOS8基准

来自分类Dev

在设备上运行时,iOS8 Beta 3 SpriteKit exc_bad_acces

来自分类Dev

我的应用从iOS8上的“后台应用刷新”设置中消失了

Related 相关文章

  1. 1

    SpriteKit自动恢复并自动暂停iOS8

  2. 2

    ios8 avfoundation相机启动时冻结

  3. 3

    SpriteKit + iOS8。SpriteKit是否支持“烘焙”渲染结果?

  4. 4

    iOS8的SpriteKit中EXC_BAD_ACESS崩溃

  5. 5

    应用中的LocalStorage在iOS8中重新启动时被清除

  6. 6

    应用中的LocalStorage在iOS8中重新启动时被清除

  7. 7

    iOS8中的可行通知无法打开应用

  8. 8

    ASIHTTPRequest使ios8上的应用程序崩溃

  9. 9

    iOS8:在应用之间共享通用文件

  10. 10

    iOS8应用内购买收据验证

  11. 11

    iOS8。照片应用程序错误?

  12. 12

    无法在新的ios8中运行我的cordova应用

  13. 13

    应用仅在特定设备ios8中崩溃

  14. 14

    在iOS8中进行应用内购买

  15. 15

    IOS8应用程序图标提交失败

  16. 16

    当showsScopeBar = YES时,iOS8上的UISearchBar高度

  17. 17

    支持iOS7和iOS8时的故事板启动图像

  18. 18

    iOS8:退出应用程序后不久,出现蓝色条“正在使用您的位置”

  19. 19

    PHAsset,应用重新启动后如何检索特定的PHAsset对象(ios8照片)

  20. 20

    从iOS8自定义键盘启动包含应用程序

  21. 21

    为什么我的更新后的应用程序仅在IOS8上启动时崩溃?

  22. 22

    在iOS8工作期间在iOS7上Spritekit SKPhysicsBody崩溃

  23. 23

    仅在iOS8中将应用锁定为纵向模式时,UIAlertView变为横向

  24. 24

    iOS7到iOS8应用程序文件的迁移

  25. 25

    装有IOS8的IOS尺寸的iPhone应用程序的iPad

  26. 26

    使用CLLocationManager并针对ios7构建的应用程序将在ios8上运行?

  27. 27

    更新iOS5应用以使用自动布局和iOS8基准

  28. 28

    在设备上运行时,iOS8 Beta 3 SpriteKit exc_bad_acces

  29. 29

    我的应用从iOS8上的“后台应用刷新”设置中消失了

热门标签

归档