2014-12-07 77 views
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() 
    } 

} 

enter image description here

+0

我認爲真正的錯誤信息是「誠信」是無法轉換爲**「UInt32的」 **? – 2014-12-07 13:46:12

+0

是的,你是對的。我用你提到的問題。儘管我的更正,我仍然有相同的錯誤(請參閱截圖)。它停在'lastYieldTimeInterval + = timeSinceLastUpdate'我用新代碼更新了問題 – Haox 2014-12-07 14:06:09

+0

這是同樣的問題:lastYieldTimeInterval和timeSinceLastUpdate有不同的類型。 Swift不會隱式轉換類型。 – 2014-12-07 15:00:22

回答

0

我發現爲什麼這是行不通的。其實它不是timesincelastupdate但仍然arc4random。我忘了把它換成兩行。現在一切工作...

謝謝您的幫助

相關問題