我如何获取,然后删除SKNode的父级?

时间:2016-12-01 06:46:41

标签: ios swift sprite-kit parent skspritenode

SKSpriteNode有父母,被随机分配,并且不知道是谁。

SKSpriteNode如何找到它的父级,然后从场景中删除父级,从而删除自己和父级?

2 个答案:

答案 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()
}