代码之家  ›  专栏  ›  技术社区  ›  Michel Kansou

如何在Swift中更改timeInterval NSTimer

  •  -2
  • Michel Kansou  · 技术社区  · 9 年前

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

    我的比赛进行得很好,直到我遇到了一个问题,那就是使用计时器根据玩家的得分来加速我的比赛,所以我不能改变我的比赛速度

    我的游戏场景类:

    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的计时器,并将myGame加速到0.8秒,我的问题是,是否可以更改myGame的时间间隔?

    拜托,我需要找到一种通过球员得分加快比赛速度的方法。

    1 回复  |  直到 9 年前
        1
  •  0
  •   Duncan C    9 年前

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

    总结如下:

    您使用的是Github的第三方库(提供了链接),它允许您以各种不同的方式创建计时器。

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

    创建2个重复计时器。第一次跑步间隔1秒,然后将其保存在一个常量myGame中。

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

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

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

    现在答案是:

    一旦创建了系统类NSTimer,就不能更改它的间隔。

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

    你要做的是关闭计时器,并用不同间隔的新计时器替换它。

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

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

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