0
我剛剛完成了我的快速遊戲,我會在所有設備上嘗試它。 我只注意到,在iPhone 5S之前,所有設備都不能與arc4random
一起使用。 iPhone 5是32位設備,arc4random
返回一個UInt32,如果隨機數太大,會導致溢出。我試圖用arc4random_uniform
代替arc4random
,因爲onevcat表示here。 但仍然無法正常工作。Swift代碼不適用於iPhone 5
見我的代碼和波紋管的屏幕截圖錯誤:
var lastYieldTimeInterval:NSTimeInterval = NSTimeInterval()
var lastUpdatetimeInterval:NSTimeInterval = NSTimeInterval()
var lastUpdatetimeIntervalBl:NSTimeInterval = NSTimeInterval()
var lastYieldTimeIntervalrou:NSTimeInterval = NSTimeInterval()
var lastYieldTimeIntervalro:NSTimeInterval = NSTimeInterval()
var lastYieldTimeIntervalj:NSTimeInterval = NSTimeInterval()
var lastYieldTimeIntervalvio:NSTimeInterval = NSTimeInterval()
var lastYieldTimeIntervalv:NSTimeInterval = NSTimeInterval()
var lastYieldTimeIntervalora:NSTimeInterval = NSTimeInterval()
var lastYieldTimeIntervaln:NSTimeInterval = NSTimeInterval()
var lastYieldTimeIntervalGold:NSTimeInterval = NSTimeInterval()
func updateWithTimeSinceLastUpdate(timeSinceLastUpdate:CFTimeInterval){
let minInterval = UInt32(0)
let maxInterval = UInt32(1500)
let rangeInterval = UInt32(maxInterval - minInterval)
lastYieldTimeInterval += timeSinceLastUpdate
let intervalbl = Int(arc4random_uniform(rangeInterval)) + Int(minInterval)
if (lastYieldTimeInterval > NSTimeInterval(intervalbl)){
lastYieldTimeInterval = 0
addBalloonbl()
}
lastYieldTimeIntervalj += timeSinceLastUpdate
let intervalj = Int(arc4random_uniform(rangeInterval)) + Int(minInterval)
if (lastYieldTimeIntervalj > NSTimeInterval(intervalj)){
lastYieldTimeIntervalj = 0
addBalloonj()
}
lastYieldTimeIntervalora += timeSinceLastUpdate
let intervalora = Int(arc4random_uniform(rangeInterval)) + Int(minInterval)
if (lastYieldTimeIntervalora > NSTimeInterval(intervalora)){
lastYieldTimeIntervalora = 0
addBalloonora()
}
lastYieldTimeIntervalrou += timeSinceLastUpdate
let intervalrou = Int(arc4random_uniform(rangeInterval)) + Int(minInterval)
if (lastYieldTimeIntervalrou > NSTimeInterval(intervalrou)){
lastYieldTimeIntervalrou = 0
addBalloonrou()
}
lastYieldTimeIntervalro += timeSinceLastUpdate
let intervalro = Int(arc4random_uniform(rangeInterval)) + Int(minInterval)
if (lastYieldTimeIntervalro > NSTimeInterval(intervalro)){
lastYieldTimeIntervalro = 0
addBalloonro()
}
lastYieldTimeIntervalvio += timeSinceLastUpdate
let intervalvio = Int(arc4random_uniform(rangeInterval)) + Int(minInterval)
if (lastYieldTimeIntervalvio > NSTimeInterval(intervalvio)){
lastYieldTimeIntervalvio = 0
addBalloonvio()
}
lastYieldTimeIntervalv += timeSinceLastUpdate
let intervalv = Int(arc4random_uniform(rangeInterval)) + Int(minInterval)
if (lastYieldTimeIntervalv > NSTimeInterval(intervalv)){
lastYieldTimeIntervalv = 0
addBalloonv()
}
let minIntervalBl = 1
let maxIntervalBl = 3000
let rangeIntervalBl = maxIntervalBl - minIntervalBl
lastYieldTimeIntervaln += timeSinceLastUpdate
let intervaln = Int(arc4random()) % Int(rangeIntervalBl) + Int(minIntervalBl)
if (lastYieldTimeIntervaln > NSTimeInterval(intervaln)){
lastYieldTimeIntervaln = 0
addBalloonnoir()
}
let minIntervalGold = 4
let maxIntervalGold = 3000
let rangeIntervalGold = maxIntervalGold - minIntervalGold
lastYieldTimeIntervalGold += timeSinceLastUpdate
let intervalGold = Int(arc4random()) % Int(rangeIntervalGold) + Int(minIntervalGold)
if (lastYieldTimeIntervalGold > NSTimeInterval(intervalGold)){
lastYieldTimeIntervalGold = 0
addBalloongold()
}
}
我認爲真正的錯誤信息是「誠信」是無法轉換爲**「UInt32的」 **? – 2014-12-07 13:46:12
是的,你是對的。我用你提到的問題。儘管我的更正,我仍然有相同的錯誤(請參閱截圖)。它停在'lastYieldTimeInterval + = timeSinceLastUpdate'我用新代碼更新了問題 – Haox 2014-12-07 14:06:09
這是同樣的問題:lastYieldTimeInterval和timeSinceLastUpdate有不同的類型。 Swift不會隱式轉換類型。 – 2014-12-07 15:00:22