使用Swift计算SpriteKit中的增量
我试图通过重构我的一个旧游戏来学习swift,我需要重写我的使用Swift计算SpriteKit中的增量,swift,sprite-kit,Swift,Sprite Kit,我试图通过重构我的一个旧游戏来学习swift,我需要重写我的update方法,该方法计算增量时间。这个代码可以工作,但很难看。我该如何正确地重写这篇文章呢 import SpriteKit class GameScene: SKScene { var lastUpdateTimeInterval: CFTimeInterval? override func update(currentTime: CFTimeInterval) { var delta: CF
update
方法,该方法计算增量时间。这个代码可以工作,但很难看。我该如何正确地重写这篇文章呢
import SpriteKit
class GameScene: SKScene {
var lastUpdateTimeInterval: CFTimeInterval?
override func update(currentTime: CFTimeInterval) {
var delta: CFTimeInterval?
if let luti = lastUpdateTimeInterval {
delta = currentTime - luti
} else {
delta = currentTime
}
lastUpdateTimeInterval = currentTime;
if (delta > 1.0) {
delta = minTimeInterval;
lastUpdateTimeInterval = currentTime;
}
updateWithTimeSinceLastUpdate(delta!)
}
}
这个问题属于我。但我只是把答案贴在这里,希望它能和问题一起迁移到正确的地方
你有一些多余的代码,这是我的第一次迭代重写
class GameScene: SKScene {
var lastUpdateTimeInterval: CFTimeInterval?
override func update(currentTime: CFTimeInterval) {
var delta: CFTimeInterval = currentTime // no reason to make it optional
if let luti = lastUpdateTimeInterval {
delta = currentTime - luti
}
lastUpdateTimeInterval = currentTime
if delta > 1.0 {
delta = minTimeInterval
// this line is redundant lastUpdateTimeInterval = currentTime
}
updateWithTimeSinceLastUpdate(delta)
}
}
并进一步简化
class GameScene: SKScene {
var lastUpdateTimeInterval: CFTimeInterval = 0
override func update(currentTime: CFTimeInterval) {
var delta: CFTimeInterval = currentTime - lastUpdateTimeInterval
lastUpdateTimeInterval = currentTime
if delta > 1.0 {
delta = minTimeInterval
}
updateWithTimeSinceLastUpdate(delta)
}
}
您可以将if
替换为?:
,但有些人只是出于某种原因讨厌它
updateWithTimeSinceLastUpdate(delta > 1.0 ? minTimeInterval : delta)
对于工作代码,如果delta>=1.0,如果他想确保刚好过了一秒钟,不是应该是
?