在 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 let
和 as!
不起作用
的,我的错,代码是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 工具包可以访问子节点的主要内容,如果未能解决你的问题,请参考以下文章
我可以在 Xcode 9.2 中为 iOS 12 开发应用程序吗?
带有 iOS 9.2 dataWithContentsOfURL 的错误 Xcode 7.3