如何在 Swift 中更改 timeInterval NSTimer

How to change timeInterval NSTimer in Swift

我是 swift 的新手,我正在使用 NSTimer 创建一个随机生成的游戏,我将此函数用于计时器 https://github.com/yuzixun/swift-timer/tree/master/example

我的游戏运行良好,直到我使用计时器根据玩家得分加速我的游戏时遇到问题,所以我无法改变我的游戏速度

我的游戏场景 class :

let myGame = Timer.repeat(after: 1) {
//my generated game code here
}
    myGame.start()

myGame :是一个使用 Timer.repeat(after:1).

每秒为我的游戏生成随机对象的函数
let LevelUpdate = Timer.repeat(after: 0.1) {
//update my game and verify player score
if(self.score >= 1000 && self.score <= 2500){
// Speedup the time of the game
}
}

LevelUpdate:是一个为我的游戏更新一些变量并每 0.1 秒验证玩家分数的函数。

我的目标是:如果玩家达到 1000 点以上并且将 myGame 加速到 0.8 秒,则能够更改 myGame 的计时器,我的问题是可以更改 myGame 的时间间隔吗?

拜托,我需要找到一种通过玩家得分加快游戏速度的方法。

好的,现在我们有足够的信息来回答您的问题了。

总结一下:

您正在使用来自 Github(link 提供)的第三方库,它允许您以各种不同的方式创建计时器。

您正在使用该库中名为 Timer 的 class,并使用方法 Timer.repeat(after:) 创建一个重复计时器。

您创建了 2 个重复计时器。第一个以 1 秒的间隔运行,您将其保存在常量 myGame 中。

您还创建了另一个以 0.1 秒为间隔运行的重复计时器,并将其保存到名为 LevelUpdate 的常量中。

您想知道如何更改 myGame 计时器的间隔。

这就是你应该写的那种描述。清晰、具体且易于理解。

现在答案:

NSTimer 一旦创建,您就无法在系统上更改间隔 class。

查看您正在使用的库,它似乎也不提供该功能。

你需要做的是杀死定时器并用一个不同间隔的新定时器替换它。

如果更改计时器的间隔,您可能会修改正在使用的库以在内部执行此操作。

否则,您需要将 myGame 更改为 var。

您应该创建一个方法 func createGameTimer (interval: NSTimeInterval) -> NSTimer,它将计时器间隔作为输入并创建 returns 您的游戏计时器。这样你就可以杀死旧计时器并在需要时创建一个具有不同间隔的新计时器。