【问题标题】:Touch functions do not work properly in iOS触控功能在 iOS 中无法正常工作
【发布时间】:2015-10-24 08:25:13
【问题描述】:

我正在制作一个通用的 SpriteKit 游戏。我在 iPhone 和 iPad 上测试我的游戏。在 iPhone 中一切正常,在模拟器中也是如此,但在 iPad 中,触摸功能在游戏场景中无法正常工作。例如;在游戏场景中,我有 4 个精灵,我可以触摸其中一个,但其他精灵在 iPad 中不起作用。有什么想法吗?到底是怎么回事 ?

    for touch in touches {
        let location = touch.locationInNode(self)
        for var i=1; i<ballNode.count; i++ {
            if nodeAtPoint(location) == ballNode[i].node && !ballNode[i].character.locked  {
                ballNode[i].touchingNode = true
                ballNode[i].angelLabel.hidden = false



                let seq = SKAction.sequence([fadeIn, fadeOut])
                ballNode[i].node.childNodeWithName("laserAni")!.hidden = false
                ballNode[i].node.childNodeWithName("laserAni")!.runAction(SKAction.repeatActionForever(seq))

                if ballNode[i].node.name == BallTypes.multipleGuns {
                    ballNode[i].node.childNodeWithName("laserAni2")!.hidden = false
                    ballNode[i].node.childNodeWithName("laserAni2")!.runAction(SKAction.repeatActionForever(seq))

                }

            }

        }

【问题讨论】:

  • 你用来“触摸”它们的代码是什么?
  • In touch started function I use if nodeAtPoint(location) == node {// code here }
  • 你能发布代码吗?代码不应仅仅因为您使用的是 iPad 而无法工作
  • 是的,我无法理解,代码在 İphone 上完美运行,但在 iPad 上却不行?你想看哪一部分?
  • 您的touches 方法或任何其他处理触摸事件的部分

标签: ios swift sprite-kit touch universal


【解决方案1】:

所以我认为这里存在某种错误。

首先,您从索引 1 开始在数组中循环,这实际上是数组中的第二个元素。 Ballnode[0] 是第一个索引。除非您将此索引保留为空白,否则根本没有设备可以访问第一个元素。其次,如果你注意到当你移动精灵的位置时你可以访问它们,那么这意味着它们中的一些重叠了。您应该检查您的图像并根据需要进行裁剪或编辑,以确保它们适合而不重叠。众所周知,iOS 9 存在许多错误,您似乎已经发现了一个错误。我的建议是相信 iOS 8 作为你的默认测试操作系统。

【讨论】:

  • 感谢您的帮助。我删除了背景图像并且工作正常。我认为 zPositions 设置错误。我接受你的回答
  • 是的,没问题,很高兴修复这么简单!
猜你喜欢
  • 1970-01-01
  • 2017-09-23
  • 2013-11-06
  • 2013-10-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多