Objective c 多次播放声音时出现问题

Objective c 多次播放声音时出现问题,objective-c,macos,sprite-kit,avaudioplayer,Objective C,Macos,Sprite Kit,Avaudioplayer,我在我的Mac OS项目中使用SpriteKit和Objective C,当两个节点之间发生接触时,我试图反复播放某种声音。我不希望播放器在再次播放之前等待声音完成。声音只有大约1秒长,但它的重复速度为每0.5秒一次。我试过两种不同的方法,它们都有问题。我可能设置得不正确 方法#1-SKAction 我尝试使用以下代码让其中一个精灵播放声音: [playBarNode runAction:[SKAction playSoundFileNamed:@"metronome" waitForCompl

我在我的Mac OS项目中使用SpriteKit和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,但不是让精灵播放声音,而是让场景通过

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

在游戏场景类中

谢谢你的回答。不幸的是,结果完全一样。有趣的是,我希望你能理解。我在我的游戏中使用了这个精确的方法,它非常有效。你有没有试过用另一个随机声音文件来看看是否发生了同样的问题,以确保它不是一个特定的文件?也可以尝试将文件类型更改为.WAV或其他扩展名。我感觉这是因为声音很短。像你一样,我以前从来没有遇到过这样的问题,我使用SpriteKit已经有一段时间了。这一次的问题是我需要声音完全准时,因为这是一款节奏应用程序,用于节拍器声音。使用SpriteKit方法的另一个问题是你无法控制音量,我认为这对这样的声音可能很重要。我只是尝试异步加载和播放声音,效果很好,但我对使用后台线程知之甚少,我希望不会影响内存。只要一次播放的线程不超过10个(这似乎不太可能)