计时器的替代品

时间:2018-10-23 01:10:12

标签: swift timer

我正在玩一个简单的游戏,有一个玩家,一个移动的背景和一个移动的墙壁,有点像飘扬的小鸟。我的播放器能够收集能量。它正在转变并进入一个特殊的层次。

我希望此级别运行大约10秒钟,然后调用反向转换。

当前,我正在使用一个计时器,该计时器仅在10秒钟后调用反向转换。我现在遇到麻烦,当玩家暂停游戏时,计时器仍在运行。

->我在stackoverflow上发现的是您无法恢复计时器,您可以使计时器无效并重新启动它。这会错过我的目标,否则玩家每9秒暂停游戏一次,就可以永远停留在超级关卡中。

你们知道我如何解决我的问题,或者喜欢在代码中使用Timers的替代方法吗?

感谢您的帮助

编辑:这是我简单使用计时器的方式

// transform and go into super level added here
self.transform()

timer = Timer.scheduledTimer(withTimeInterval:10, repeats: false) {
                    timer in
self.backtransform()
}

1 个答案:

答案 0 :(得分:1)

启动计时器时,使用

将当前时间记录为Double。
let start = Date().timeIntervalSinceReferenceDate
var remaining = 10.0

当用户暂停计时器时,计算经过的时间:

let elapsed = Date().timeIntervalSinceReferenceDate - start

以及计时器的剩余时间:

remaining -= elapsed

如果用户恢复计时器,请将其设置为剩余时间,而不是10秒。