SpriteKit SKAction暂停滞后

时间:2015-07-13 21:48:33

标签: swift sprite-kit

我有一个spawn动作,我正在使用NSTimer来创建它,但是我将其更改为SKAction,以便在场景暂停时停止:

let SpawnAction = SKAction.sequence([SKAction.waitForDuration(0.5), SKAction.runBlock(Spawn)])
self.runAction(SKAction.repeatActionForever(SpawnAction))

现在问题是我认为代码的waitForDuration部分存在滞后现象,因为它在场景取消暂停后无法正常工作。

这是我用来暂停/取消暂停游戏的代码:

override func touchesBegan(touches: Set<NSObject>, withEvent event: UIEvent) {

    for touch in (touches as! Set<UITouch>) {
        let location = touch.locationInNode(self)
        let node = self.nodeAtPoint(location)
        if (node.name == "Pause") {
            PauseLabel.removeFromParent()
            self.addChild(ResumeLabel)
            self.runAction(SKAction.runBlock(self.pauseGame))
        }
        else if (node.name == "Resume") {
            self.view!.paused = false
            self.addChild(PauseLabel)
            ResumeLabel.removeFromParent()
        }
        else {
            //Other code...
        }
    }
}

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

我希望有人告诉我正确暂停/取消暂停SpriteKit游戏的方法,因为我从互联网上下载的所有方法都不适合我。谢谢。

1 个答案:

答案 0 :(得分:0)

我不确定这是否适合你。但是在我用来暂停的按钮的所选处理程序中的var selectRowProp = { mode: "radio", hideSelectColumn: true, clickToSelect: true, bgColor: "rgb(238, 193, 213)", onSelect: onRowSelect }; 函数下:

我使用didMoveToView
 以及使用self.gameState = .Pause

这些都会停止游戏视图,而且physicsworld会帮助阻止可能在你的精灵上运行的任何障碍。

希望这会对你有所帮助。