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)
}
}