从数组spritekit swift中删除节点

时间:2016-09-20 09:18:32

标签: arrays swift skspritenode removeclass

我正在为iOS(spritekit / swift)开发一款小游戏。

我的场景中有一个 SKSpriteNode 数组,如下所示:

var spritesTree = [SKSpriteNode]()

然后我用一个函数填充数组并将它们添加到场景中:

spritesTree = spritesCollectionTree(count: numTrees)
    for sprite in spritesTree {
        addChild(sprite)
    }

之后,根据情况,该过程会在阵列中添加更多树。我知道如果我知道索引

,如何从场景和数组中删除元素
            spritesTree[i].removeFromParent()
            spritesTree.removeAtIndex(i)

但我的问题是当我不知道索引时删除此数组中的特定节点。例如,当其中一个精灵被触摸时

    override func touchesBegan(touches: Set<NSObject>, withEvent event: UIEvent) {
    /* Called when a touch begins */

    for touch in (touches as! Set<UITouch>) {

        let location = touch.locationInNode(self)
        let positionInScene = touch.locationInNode(self)
        let touchedNode = self.nodeAtPoint(positionInScene)

在这种情况下,如果我不知道索引,如何从 SKSpriteNode 的数组 spritesTree 中删除triggeredNode?我读了一些关于 indexOf 的内容,以便先找到索引,但它不适用于我的 SKSpriteNode 数组。你能帮帮我吗?

贝斯茨,

1 个答案:

答案 0 :(得分:0)

您可以为每个SKSpriteNode创建一个名称:

spritesTree[index].name = String(index) 

检查节点后,将名称转换为Int

    let location = touch.locationInNode(self)
    let positionInScene = touch.locationInNode(self)
    let touchedNode = self.nodeAtPoint(positionInScene)
    var index = Int(touchedNode.name)
    touchedNode.removeFromParent()
    spritesTree.removeAtIndex(index)