我正在使用代表球的 SKspritenode。我正在忙着做的是我希望球在每个时间间隔后改变颜色。
override func update(_ currentTime: TimeInterval) {
ball.color = UIcolor.random()
}
我会说代码可以很好地改变颜色。然而,问题是每一帧的颜色变化比我计划的颜色变化要快得多,比如每 2 秒一次。
下面列出了我解决这个问题的方法
var relative = 300
var Time = 0 {
didSet {
if Time == relative {
ball.color = UIColor.random()
}
}
}
override func update(_ currentTime: TimeInterval) {
PT.run(SKAction.moveTo(x: ball.position.x, duration: 0.5))
Time += 1
if Time == relative {
Time = 0
}
}
因此此代码旨在每 Time == 300 更改一次颜色。而值 Time 每帧更新一次。那么时间值会在达到 300 时重置为 0
这样我就可以在几秒后而不是每一帧后改变颜色。
这种设计可能看起来很便宜,而且是一种未经经验的编码和设置函数运行的方式。这就是为什么我要求任何有经验的程序员帮助我建立一种更好的方法来设计这种逻辑。我对函数及其工作方式非常陌生,所以如果你们中的任何人都可以向我学习如何编写可运行或自包含函数的代码,而不依赖于“Swift 内置函数”,如“Override function Update”
最佳答案
你可以使用一个简单的模数
if currentTime % 300 == 0 { ball.color = UIColor.random() }
关于ios - 生成具有时间间隔的随机颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45170997/