2014-12-07 4 views
0

방금 ​​빠른 게임을 마쳤으며 모든 기기에서 사용해 보았습니다. iPhone 5S 이전에는 모든 장치가 arc4random으로 작동하지 않습니다. iPhone 5는 32 비트 장치이고 arc4random은 UInt32를 반환하며 난수가 너무 크면 오버플로가 발생합니다. 나는 arc4randomarc4random_uniform로 바꿔서 onevcat을 here으로 바꾸려고했다. 하지만 여전히 작동하지 않습니다. 문제가 해결되지 않는 이유를 내가 찾은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

주셔서 감사합니다? –

+0

네가 맞습니다. 당신이 언급 한 질문을 사용합니다. 필자의 수정에도 불구하고 여전히 같은 오류가 있습니다 (스크린 샷 참조). 'lastYieldTimeInterval + = timeSinceLastUpdate'에서 멈 춥니 다. 새로운 코드 – Haox

+0

으로 질문을 업데이트했습니다. 같은 문제입니다. lastYieldTimeInterval과 timeSinceLastUpdate는 다른 유형이 있습니다. Swift는 형식을 암시 적으로 변환하지 않습니다. –

답변

0

:

내 코드를 넣고 스크린 샷 오류를 참조하십시오. 사실 timesincelastupdate이 아니지만 여전히 arc4random입니다. 나는 그것을 두 줄로 바꾸는 것을 잊었다. 이제 모두가 노력하고 있습니다 ...

내가 진짜 오류 메시지가 '지능이'에 ** 'UINT32'** 전환되지 않는 것입니다 가정 당신의 도움

관련 문제