使用EnumerateChildNodeWithName执行序列操作

时间:2015-06-16 07:01:20

标签: swift sprite-kit nodes fade alpha

我希望两种不同类型的节点一个接一个地淡化alpha到0(带序列)。但是为了找到要淡化的节点,我使用EnumerateChildNodeWithName并且有两个,所以我不能(我认为)使用序列,因为我必须使用EnumerateChildNodeWithName之外的序列(因为有两个他们在那时,我失去了对节点的控制。

不确定这是否有意义,但这是我的代码(这会使两种类型的节点同时消失):

    nodeMovingPlatform1.enumerateChildNodesWithName("*") {
        node, stop in
        if node.position.x + nodeMovingPlatform1.position.x > self.frame.size.width/2 + node.frame.size.width/2 {
            node.removeFromParent()
        } else {
            if node.name == "landscapeTrigger" {
                node.name = "landscape"
                node.runAction(actionFadeAlphaTo0_3)
            }

        }
    }

    nodeMovingPlatform2.enumerateChildNodesWithName("*") {
        node, stop in
        if node.position.x + nodeMovingPlatform2.position.x > self.frame.size.width/2 + node.frame.size.width/2 {
            node.removeFromParent()
        } else {
            if node.name == "landscapeTrigger" {
                node.name = "landscape"
                node.runAction(actionFadeAlphaTo0_3)
            }

        }
    }

1 个答案:

答案 0 :(得分:1)

对此的解决方案是使用SKAction Sequences,它只在第一个动作完成后运行第二个动作。

来自Apple文档

  

序列是一组连续运行的动作。当一个节点   运行一个序列,动作按连续顺序触发。什么时候   一个动作完成,下一个动作立即开始。当。。。的时候   序列中的最后一个动作完成,序列动作也完成   完成。