Swift代码在iPhone 5上不起作用

时间:2014-12-07 13:08:41

标签: iphone swift sprite-kit arc4random

我刚刚完成了我的快速游戏,我会在所有设备上尝试。 我只是注意到,在iPhone 5S之前,所有设备都无法与arc4random一起使用。 iPhone 5是一个32位设备,arc4random返回一个UInt32,如果随机数太大,它将导致溢出。我尝试将arc4random替换为arc4random_uniform,因为onevcat说here。 但仍然行不通。

请参阅我的代码和屏幕截图错误:

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

1 个答案:

答案 0 :(得分:0)

我发现为什么这不起作用。实际上它不是timesincelastupdate,而是arc4random。我忘了把它换成两行。现在一切正常......

感谢您的帮助