我正在关注本教程Tutorial space game,我得到了这个:主题1:BAD_EXEC_INSTRUCTION(代码= EXC_I386_INVOP,子代码= 0x0)。一切都冻结之后,第一部分是好的我看到了船和背景,但是当敌人应该出来时,异常被抛出。代码如下:
func addAlien() {
var alien: SKSpriteNode = SKSpriteNode(imageNamed: "alien")
alien.physicsBody = SKPhysicsBody(rectangleOfSize: alien.size)
alien.physicsBody.dynamic = true
alien.physicsBody.categoryBitMask = alienCategory
alien.physicsBody.contactTestBitMask = photonTorpedoCategory
alien.physicsBody.collisionBitMask = 0
let minX = alien.size.width/2
let maxX = self.frame.size.width - alien.size.width/2
let rangeX = maxX - minX
var position:CGFloat = CGFloat(Int(arc4random())) % CGFloat(rangeX) + CGFloat(minX)
alien.position = CGPointMake(position, self.frame.size.height + alien.size.height)
self.addChild(alien)
let minDuration = 2
let maxDuration = 4
let rangeOfDuration = maxDuration - minDuration
var duration = Int(arc4random()) % Int(rangeOfDuration) + Int(minDuration)
var actionArray: NSMutableArray = NSMutableArray()
actionArray.addObject(SKAction.moveTo(CGPointMake(position, -alien.size.height), duration: NSTimeInterval(duration))) <------- Exception in this line
actionArray.addObject(SKAction.removeFromParent())
alien.runAction(SKAction.sequence(actionArray))
//alien.runAction(SKAction.sequence(actionArray))
}
我不知道出了什么问题,在另一个教程游戏中也是如此。函数addAlien()从:
调用func updateWithTimeSinceLastUpdate(timeSinceLastUpdate: CFTimeInterval) {
lastYieldInterval += timeSinceLastUpdate
if lastYieldInterval > 1 {
lastYieldInterval = 0
addAlien()
}
}
有任何帮助吗?感谢。
编辑:XCode的样子。
答案 0 :(得分:1)
我在本教程中遇到了同样的问题。
我已经修复了使用此代码修改持续时间的异常:
var duration = UInt32(arc4random()) % UInt32(rangeDuration) + UInt32(maxDuration)