Ios 执行一个又一个操作?

Ios 执行一个又一个操作?,ios,swift,sprite-kit,Ios,Swift,Sprite Kit,我基本上有三个精灵。我想先让它们全部淡出。完成后,我想对它们执行其他操作。这是我的密码: //Fade the sprites out oneMissedOrbIndicator.runAction(SKAction.fadeOutWithDuration(0.5)) firstTwoMissedOrbsIndicator.runAction(SKAction.fadeOutWithDuration(0.5)) secondTwoMissedOrbsIndicat

我基本上有三个精灵。我想先让它们全部淡出。完成后,我想对它们执行其他操作。这是我的密码:

    //Fade the sprites out
    oneMissedOrbIndicator.runAction(SKAction.fadeOutWithDuration(0.5))
    firstTwoMissedOrbsIndicator.runAction(SKAction.fadeOutWithDuration(0.5))
    secondTwoMissedOrbsIndicator.runAction(SKAction.fadeOutWithDuration(0.5))

    //Do this after all three sprites have been faded out
    switch numberOfCollectionOrbsNotCollected {
    case 0:
        break
    case 1:
        oneMissedOrbIndicator.runAction(SKAction.fadeInWithDuration(0.5))
    case 2:
        firstTwoMissedOrbsIndicator.runAction(SKAction.fadeInWithDuration(0.5))
        secondTwoMissedOrbsIndicator.runAction(SKAction.fadeInWithDuration(0.5))
    default:
        print("Unreachable switch statement case reached3!\n")
        exit(EXIT_FAILURE)

    }
然而,SpriteKit并没有等到淡出动作完成后再继续下一个动作,所以本质上我想在之后同时发生的事情

三个精灵全部淡出后,如何执行switch语句

我尝试了以下方法:

1) 在淡入淡出的代码之后有一个while语句。while循环保持循环,而“hasActions”对任何精灵都是真的。这只是冻结了我的应用程序


2) 在最后一个精灵I淡出的“completion”关闭中执行switch语句。这与上面的代码执行相同-switch语句出于某种原因同时发生。

创建一系列操作,如下所示:

SKAction *fadeout1 = [SKAction…….];
SKAction *fadeout2 = [SKAction…….];

[node runAction:fadeout1];
[node runAction:fadeout2];

SKAction *fadeout3 = [SKAction…….];
SKAction *somethingElseAfterFadeout = [SKAction …….];
SKAction *sequence = [SKAction sequence:@[fadeout3, somethingElseAfterFadeout]];
[node runAction: sequence];

您可以检查这样的操作是否完成

var completed = false

let fadeOut = SKAction.fadeOutWithDuration(0.5)

 oneMissedOrbIndicator.runAction(fadeOut, completion: {self.completed = true})
    firstTwoMissedOrbsIndicator.runAction(fadeOut)
    secondTwoMissedOrbsIndicator.runAction(fadeOut)
由于您同时运行这些操作,因此只需检查一个操作的完成情况即可更改布尔值。现在可以将switch语句放在update函数中,以检查completed是否为true

    override func update(currentTime: NSTimeInterval) {

if completed == true {

switch numberOfCollectionOrbsNotCollected {
    case 0:
        break
    case 1:
        oneMissedOrbIndicator.runAction(SKAction.fadeInWithDuration(0.5))
    case 2:
        firstTwoMissedOrbsIndicator.runAction(SKAction.fadeInWithDuration(0.5))
        secondTwoMissedOrbsIndicator.runAction(SKAction.fadeInWithDuration(0.5))
    default:
        print("Unreachable switch statement case reached3!\n")
        exit(EXIT_FAILURE)
}

}