【问题标题】:EXEC_BAD_ACCESS when adding sprite to view将精灵添加到视图时的 EXC_BAD_ACCESS
【发布时间】:2014-08-20 19:12:24
【问题描述】:

我正在使用 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 内部发生的事情。

还有其他人看到吗?

【问题讨论】:

  • 您可以从 Xcode 控制台(查看->调试->控制台)轻松复制和粘贴错误
  • 当我选择它时,我什么也得不到。它应该去哪里?并不是说它改变了除了打字之外的任何东西......
  • 剪贴板...选择文本,按 cmd+c,然后按 cmd+v 进行粘贴。甚至适用于许多非文本视图,例如调用堆栈等列表视图

标签: swift sprite-kit osx-mavericks


【解决方案1】:

这是在 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)
     }
    }

【讨论】:

  • 那是 iOS,我是 MacOS。
【解决方案2】:

好的,这被证明是 beta 版本中的一个错误。将我的 Xcode 替换为 6.0 版本,然后从 6.1B 复制 10.10 SDK 可以解决此问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-21
    • 1970-01-01
    • 2012-09-03
    相关资源
    最近更新 更多