我正在使用代表球的SKspritenode。我正忙着做的是我想要球在每個時間間隔後改變顏色。隨時間間隔生成隨機顏色
override func update(_ currentTime: TimeInterval) {
ball.color = UIcolor.random()
}
我想說,代碼的作品足以改變顏色。但問題在於每個Frame女巫的顏色變化比我計劃的顏色變化要快得多,就像每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
}
}
所以這段代碼的目的是改變顏色每次== 300而值時間是每幀更新。那麼時間值會重置= 0時,它達到300
這樣我可以改變後,秒而不是每一幀的顏色。
這種設計可能看起來便宜且沒有經驗的編碼和設置功能的運行方式。這就是爲什麼我要求任何有經驗的程序員幫助我構建一個更好的方法來設計這個邏輯。我對功能和工作原理都很陌生,所以如果你們中的任何一位能夠學習如何編寫一個可運行的或者自帶功能的代碼,而不依賴於像「Override function Update」這樣的「Swift內置功能」,
沒有工作。我猜它是因爲計時器沒有被分配任何值 – user3211359
@ user3211359'var timer:CFTimeInterval = 0.0'是一個賦值,'timer + = delta'的確將增量添加到它。如果你沒有增量時間,你不會正確傳遞當前時間。 – BennX
我確實分配了定時器。問題是,計時器看起來有點像這樣 0.0166666669974802 - luti 26790.488545286 - delta – user3211359