在 iOS 9.2 中,Sprite 工具包可以访问子节点

Posted

技术标签:

【中文标题】在 iOS 9.2 中,Sprite 工具包可以访问子节点【英文标题】:Sprite kit get access to child nodes in iOS 9.2 【发布时间】:2015-12-14 13:45:39 【问题描述】:

我需要访问 SKSpriteNode 的子节点。 在 ios 9.1 中,我曾经这样做过:

let node = nodeAtPoint(touchLocation)

If let myNode = node as? MyNode 
//some code if node is kind of class

它运行良好,但在 iOS 9.2 中却不行。有谁知道这是怎么回事?

【问题讨论】:

怎么不工作? - 你有错误吗? if letas! 不起作用 的,我的错,代码是If let myNode = node as? MyNode //如果节点是类的一些代码,但它无论如何都不起作用没有错误,它只是无法识别节点是类的类型 您是否尝试过打印节点以查看它是什么? print(node) 您确定该节点是 MyNode 的成员吗?也许它正在拉入父节点,并且您的 zorder 需要修复 【参考方案1】:

要访问 SKNode 的子节点,请访问只读的“children”参数(请参阅SKNode children)。

我怀疑 iOS 9.1 到 9.2 的更改具有误导性。如果 nodeAtPoint 恰好也位于该点并且不管它的子类如何,它只会返回一个孩子。如果存在多个节点,它会选择“deapest”,然后选择“最大 z”(如果所有节点都具有相同的 z,那么它返回的可能是任意的)。如果此时不存在节点,则返回接收者。因此,它返回的内容会根据您在调用它时的场景而变化很大 - 所以它可能似乎在工作,而它从来没有真正按照您的想法工作?

【讨论】:

以上是关于在 iOS 9.2 中,Sprite 工具包可以访问子节点的主要内容,如果未能解决你的问题,请参考以下文章

Sprite Kit 无法通过分数,Null 值

Xamarin iOS (9.2):手势在模拟器中不起作用

我可以在 Xcode 9.2 中为 iOS 12 开发应用程序吗?

带有 iOS 9.2 dataWithContentsOfURL 的错误 Xcode 7.3

为啥应用存档在 iOS、swift、xcode 9.2 中使用自定义框架失败

在 Sprite Kit iOS 中使用一个图像精灵表