的代碼是很長,但我想一個簡單的測試GameScene所以你可以,如果我跑了一段時間的應用程序看一看在控制檯中顯示的結果:
內didMoveToView testNode暫停:真正 場景(個體經營)暫停:假
Loop_Update:0 testNode暫停:真 場景(個體經營)暫停:假
Loop_didEvaluateActions:0 testNode暫停:真 場景(個體)暫停:假
Loop_didFinishUpdate:0 testNode暫停:真 場景(個體)暫停:假
Loop_Update:1個 testNode暫停:假 場景(個體)是暫停:假
Loop_didEvaluateActions:1個 testNode暫停:假 場景(個體)暫停:假
Loop_didFinishUpdate:1 testNode已暫停:false 場景(自我)暫停:false
spritekit是否強制場景在第一個渲染循環之後取消暫停本身?
//
// Test on paused Nodes
//
import SpriteKit
class GameScene: SKScene {
let testNode = SKNode()
var loopCounter:Int = 0
override func didMoveToView(view: SKView) {
self.addChild(testNode)
testNode.paused = true
print ("Inside didMoveToView")
print("testNode is paused:",testNode.paused)
print("scene(self) is paused:",scene!.paused)
print("")
}
override func update(currentTime: CFTimeInterval) {
print ("Loop_Update:",loopCounter)
print("testNode is paused:",testNode.paused)
print("scene(self) is paused:",scene!.paused)
print("")
}
override func didEvaluateActions() {
print ("Loop_didEvaluateActions:",loopCounter)
print("testNode is paused:",testNode.paused)
print("scene(self) is paused:",scene!.paused)
print("")
}
override func didFinishUpdate() {
// This is the last chance to make changes to the scene
print ("Loop_didFinishUpdate:",loopCounter)
print("testNode is paused:",testNode.paused)
print("scene(self) is paused:",scene!.paused)
print("")
loopCounter=loopCounter+1
}
// After didFinishUpdate SKView renders the scene.
// Does spritekit force the scene to unpause itself here?
}
嘗試加入這個'runAction(SKAction.runBlock {self.SoundsLayerNode.paused =真})''來didMoveToView' – 0x141E
恐怕也不起作用,因爲該問題後發生第一個渲染循環結束(或第二個循環的開始)。如果我在didMoveToView中運行Action,它會在觸發'unpause'效果之前的第一個-didEvaluateAction方法中執行 – Codediver