多次播放声音的问题

时间:2017-06-21 21:11:55

标签: objective-c macos sprite-kit avaudioplayer

我正在使用SpriteKit为我的Mac OS项目使用Objective C,我试图在两个节点之间发生接触时反复播放某种声音。在再次播放之前,我不希望播放器等待声音完成。声音只有大约1秒钟,但它每0.5秒重复一次。我尝试过两种不同的方法,但都有问题。我可能没有正确设置。

方法#1 - SKAction

我尝试使用以下代码让其中一个精灵播放声音:

[playBarNode runAction:[SKAction playSoundFileNamed:@"metronome" waitForCompletion:NO]];

声音按时完美播放,但声音被修改。这听起来像混响(回声)应用于它,它也失去了很多音量。

方法#2 - AVAudioPlayer

以下是我用来设置的代码:

-(void) initAudio {
    NSString *path = [NSString stringWithFormat:@"%@/metronome.mp3", [[NSBundle mainBundle] resourcePath]];
    NSURL *metronomeSound = [NSURL fileURLWithPath:path];
    _audioPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:metronomeSound error:nil];
    [_audioPlayer prepareToPlay];
}

稍后在代码中调用它:

[_audioPlayer play];

这个问题是它似乎要等到第一次完成播放才再次播放声音。基本上它没有多次播放。

我是否错误地设置了这个?我怎样才能解决这个问题?提前谢谢。

1 个答案:

答案 0 :(得分:0)

重试方法1,但不是让精灵播放声音,而是通过场景播放声音

[self runAction:[SKAction playSoundFileNamed:@"metronome" waitForCompletion:NO]];

游戏内部SKScene类