Sprite kit检测声音完成

时间:2015-03-05 13:19:40

标签: ios sprite-kit skaction

我已经使用了一系列动作,其中一个动作对我来说很有意义。

        SKAction *wait = [SKAction waitForDuration:1];

        NSString* completion_sound = self.gameData[@"level_data"][@"completion_sound"];
        SKAction *playSound = [SKAction playSoundFileNamed:completion_sound waitForCompletion:NO];

        SKAction *completion = [SKAction runBlock:^{

            // do some code here.

        }];

        SKAction *sequence = [SKAction sequence:@[wait, playSound, completion]];

        [self runAction:sequence];

但我想检测完声音。在调用块时,似乎声音仍在播放。

2 个答案:

答案 0 :(得分:1)

你的顺序错了。正确的顺序应该是:

SKAction *sequence = [SKAction sequence:@[playSound, wait, completion]];

答案 1 :(得分:1)

您似乎正在为waitForCompletion:参数传递,它应该是

  

如果是,则此操作的持续时间与音频播放的长度相同。如果否,则认为该行动已立即完成。

所以在这行代码中改为YES ......

SKAction *playSound = [SKAction playSoundFileNamed:completion_sound waitForCompletion:YES];

... playSound动作持续时间将是声音的长度,因此在完成声音之前不会执行“完成块”SKAction *completion