SKSpriteNode
有父母,被随机分配,并且不知道是谁。
SKSpriteNode
如何找到它的父级,然后从场景中删除父级,从而删除自己和父级?
答案 0 :(得分:4)
如果您仔细阅读文档,您会在SKNode
类中找到名为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]))
答案 1 :(得分:1)
假设A是SKSpriteNode,您可以检查它是否有父级,如果有,则可以通过从父级删除来将其从视图中删除。
if let parentOfA = A.parent{
parentOfA.removeFromParent()
}