gpt4 book ai didi

swift - 尝试让 NSTimers 在快速触发时同步

转载 作者:行者123 更新时间:2023-11-30 13:47:48 27 4
gpt4 key购买 nike

我正在尝试创建一个游戏,用户必须在平台的间隙中导航球(称为坠落)。当分数达到一定程度时,移动平台会以更快的速度创建。为了实现这一点,我编写了以下代码:

switch String(level) {

case "1" :
beginLevel.invalidate()
level1 = NSTimer.scheduledTimerWithTimeInterval( 0.9 , target: self, selector: Selector("platformCreation"), userInfo: nil , repeats: true)

case "2" :
level1.invalidate()
level2 = NSTimer.scheduledTimerWithTimeInterval( 0.8 , target: self, selector: Selector("platformCreation"), userInfo: nil , repeats: true)

case "3" :
level2.invalidate()
level3 = NSTimer.scheduledTimerWithTimeInterval( 0.7 , target: self, selector: Selector("platformCreation"), userInfo: nil , repeats: true)

case "4" :
level3.invalidate()
level4 = NSTimer.scheduledTimerWithTimeInterval( 0.6 , target: self, selector: Selector("platformCreation"), userInfo: nil , repeats: true)

default :
print("invalid level")
}

只要游戏重新启动就会运行beginLevel,级别只能是1-4。

我遇到的问题是,一旦前一个 NSTimer 无效,在新平台被触发之前,会出现延迟,不会创建任何平台。这些延迟让游戏变得太简单了,而且说实话,它看起来也很难看!我试图实现的是平台之间的持续流动,平台之间没有巨大的差距。我们非常感谢您能为这个问题提供的任何信息。

最佳答案

一种可能的解决方案是在适当的延迟后使旧计时器失效。

let delayTime = dispatch_time(DISPATCH_TIME_NOW, Int64(0.5 * Double(NSEC_PER_SEC)))
dispatch_after(delayTime, dispatch_get_main_queue()) {
self.level1.invalidate()
}

关于swift - 尝试让 NSTimers 在快速触发时同步,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34705331/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com