Xcode 7.2、iOS 8.X、SpriteKit、Sprite 无法识别任何触摸

标签 xcode swift sprite-kit touch ios-simulator

我开发了:

  • 使用 Swift 2.1.1(当前版本)和 SpriteKit 进行游戏
  • 我在 Xcode 7.2 上运行
  • OS X 10.11.2 (EL Capitan)
  • 游戏项目设置“部署目标”设置为 8.0。

在真正的 iPhone 6 设备和任何运行 iOS 9.x 的模拟器上一切正常。

但是我需要在iOS 8.x上测试它,我只有这个版本的模拟器。游戏正常启动 - 一切看起来都很好,但我无法单击任何地方。无法识别点击/触摸。日志或 Xcode 中没有错误。我不知道问题出在哪里,模拟器还是我的游戏。

有人有类似的问题吗?感谢您的建议。

编辑: 经过一番研究,我发现 iOS 8 有 bug:一个属性为 hide=true 的(全屏) Sprite 位于我的可触摸 Sprite 按钮上方。这个全屏 Sprite “吸收”所有触摸。哪怕是隐藏的。此错误已在 iOS 9 中修复。

有什么想法要做什么吗?

最佳答案

我的解决方法:不仅要隐藏,还要从父 Sprite 中删除。 我的所有 Sprite 都是 MySpriteNode 的后代。在该类中,我实现了函数 setVisible(),实现:

func setVisible(visible:Bool, _ newParent:SKNode?)
{
    // hide sprite
    if !visible
    {
        self.hidden = true
        self.removeFromParent()
    }

    // show sprite
    else
    {
        self.hidden = false
        if newParent != nil && self.parent == nil
        {
            newParent!.addChild(self)
        }
        else
        {
            // Sprite is visible (with old parent)
        }
    }
}

如果我想隐藏 Sprite :

myButton.setVisible(false, nil)

如果我想显示 Sprite ,我必须知道一个父级:

myButton.setVisible(true, self)

现在,触摸已成功识别。

关于Xcode 7.2、iOS 8.X、SpriteKit、Sprite 无法识别任何触摸,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34223651/

相关文章:

swift - 在 SpriteKit 中使用滑动识别器

ios - SpriteKit - 获取最近的节点

ios - 未调用自定义单元格 didSelectRowAtIndexPath

ios - Xcode 中的不同对象库

objective-c - 如何使用 XCode 4 使我的代码兼容 Tiger (10.4)?

javascript - 图像组件上的 React-native 失败 propType

arrays - Swift:配对数组元素的最佳方法是什么

ios - 添加对自定义单元格的支持后,MessageKit Collection View 不显示任何单元格

ios - 如何从 GameScene.swift 中关闭 ViewController?

html - 我可以获取某个 ID 中每个 <p> 和 </p> 之间的所有文本吗