我开发了:
- 使用 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/