我如何获取并删除 SKNode 的父节点?
How do I get at, and then remove the parent of an SKNode?
A SKSpriteNode
有一个父对象,它是随机分配的,不知道它是谁。
那个SKSpriteNode
如何找到它的父级,然后从场景中移除父级,从而移除自己和父级?
如果您仔细阅读文档,您会在SKNode
class 中找到一个名为removeFromParent
的方法。只需调用它:
yourSpriteNode.removeFromParent()
或者,如果您想在一系列 SKAction
之后从其父节点中删除节点,您可以使用 SKAction.removeFromParent()
.
let removeFromParentAction = SKAction.removeFromParent()
let sequence = SKAction.sequence([yourOtherActions, removeFromParentAction])
yourSpriteNode.run(sequence)
编辑:
看完你的评论,我猜你可能做了这样的事情:
// "cherry pick" an action
let action = AllMyActions.action1
yourSpriteNode.run(action);
嗯,解决这个问题的方法是创建一个像这样的动作:
let removeParent = SKAction.run {
[unowned self] in self.yourSpriteNode.parent?.removeFromParent() }
将上面的代码放在您选择动作的那一行之后,
yourSpriteNode.run(SKAction.sequence([action, removeParent]))
假设 A 是一个 SKSpriteNode ,您可以检查它是否有父节点,如果有,您可以通过从父节点中删除来将其从视图中删除。
if let parentOfA = A.parent{
parentOfA.removeFromParent()
}
A SKSpriteNode
有一个父对象,它是随机分配的,不知道它是谁。
那个SKSpriteNode
如何找到它的父级,然后从场景中移除父级,从而移除自己和父级?
如果您仔细阅读文档,您会在SKNode
class 中找到一个名为removeFromParent
的方法。只需调用它:
yourSpriteNode.removeFromParent()
或者,如果您想在一系列 SKAction
之后从其父节点中删除节点,您可以使用 SKAction.removeFromParent()
.
let removeFromParentAction = SKAction.removeFromParent()
let sequence = SKAction.sequence([yourOtherActions, removeFromParentAction])
yourSpriteNode.run(sequence)
编辑:
看完你的评论,我猜你可能做了这样的事情:
// "cherry pick" an action
let action = AllMyActions.action1
yourSpriteNode.run(action);
嗯,解决这个问题的方法是创建一个像这样的动作:
let removeParent = SKAction.run {
[unowned self] in self.yourSpriteNode.parent?.removeFromParent() }
将上面的代码放在您选择动作的那一行之后,
yourSpriteNode.run(SKAction.sequence([action, removeParent]))
假设 A 是一个 SKSpriteNode ,您可以检查它是否有父节点,如果有,您可以通过从父节点中删除来将其从视图中删除。
if let parentOfA = A.parent{
parentOfA.removeFromParent()
}