使用SpriteKit第一次播放声音时出现小延迟

时间:2013-11-02 06:39:22

标签: audio sprite-kit

当我使用[self playSoundFileNamed]播放声音时,第一次播放声音会有一个小延迟,整个应用程序冻结大约半秒钟,但之后就没问题了。我怎么能摆脱这个?

3 个答案:

答案 0 :(得分:15)

在我的游戏设置方法中,我做了类似的事情,似乎效果很好。

拥有iVar

 SKAction *_ballsHitSound;

加载场景时设置

_ballsHitSound = [SKAction playSoundFileNamed:@"ballsCollide.mp3" waitForCompletion:NO];

然后声音就准备好了

[self runAction:_ballsHitSound];

答案 1 :(得分:0)

playSoundFileNamed:动作是播放小声音,如游戏的声音效果,而不是背景音乐或更大的声音文件。如果您打算播放更大的声音文件,最好使用AVAudioPlayer类,这样可以更好地控制声音再现。 以下是如何使用它的代码片段:

// Load and start background music
    NSError *error;
    NSURL * backgroundMusicURL = [[NSBundle mainBundle] URLForResource:@"background-music" withExtension:@"mp3"];
    self.backgroundMusicPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:backgroundMusicURL error:&error];
    self.backgroundMusicPlayer.numberOfLoops = -1;
    [self.backgroundMusicPlayer prepareToPlay];
    [self.backgroundMusicPlayer play];

答案 2 :(得分:0)

我认为你不必在主线程上播放你的声音,所以我会尝试在后台线程上播放它。

dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^(void) {
        // Play it here
    });