我正在使用XB6在10.9的Swift中使用Sprite Kit。我在场景中添加了一些代码,在鼠标点击的位置添加了一个精灵。它这样加载精灵:
let location = theEvent.locationInNode(self)
let sprite = SKSpriteNode(imageNamed:"Spaceship")
sprite.position = location
sprite.setScale(0.5)
self.addChild(sprite)
这段代码可以运行一段时间;我点击后,一个精灵出现在我期望的地方。但是如果我继续点击,最后第二行会变成:
EXEC_BAD_ACCESS (code=EXC_I386_GPFLT)
(我希望他们允许你复制错误…)。有时需要5次点击,有时需要20次,没有明显的模式。在谷歌上搜索一下这个错误,很明显是SK或Swift内部发生了一些事情。
还有人看到了吗?
是否在touchesBegan函数中?如果有,你使用循环了吗?
override func touchesBegan(touches: NSSet, withEvent event: UIEvent) {
for touch in touches{
let location = touch.locationInNode(self)
let sprite = SKSpriteNode(imageNamed:"Spaceship")
sprite.position = location
sprite.setScale(0.5)
self.addChild(sprite)
}
}
好的,这原来是一个错误的测试版构建。将我的Xcode替换为6.0版本,然后从6.1B复制10.10 SDK可以解决此问题。