-(IBAction)playSound{ AVAudioPlayer *myExampleSound;
NSString *myExamplePath = [[NSBundle mainBundle] pathForResource:@"myaudiofile" ofType:@"caf"];
myExampleSound =[[AVAudioPlayer alloc] initWithContentsOfURL:[NSURL fileURLWithPath:myExamplePath] error:NULL];
myExampleSound.delegate = self;
[myExampleSound play];
}
我想在单击按钮时播放哔声。我用过上面的代码。但是播放声音需要一些延迟。
任何人请帮忙。
最佳答案
延迟有两个来源。第一个更大,可以使用 prepareToPlay
的 AVAudioPlayer
方法消除。这意味着您必须将 myExampleSound
声明为类变量并在需要它之前的某个时间对其进行初始化(当然在初始化后调用 prepareToPlay
):
- (void) viewDidLoadOrSomethingLikeThat
{
NSString *myExamplePath = [[NSBundle mainBundle]
pathForResource:@"myaudiofile" ofType:@"caf"];
myExampleSound =[[AVAudioPlayer alloc] initWithContentsOfURL:
[NSURL fileURLWithPath:myExamplePath] error:NULL];
myExampleSound.delegate = self;
[myExampleSound prepareToPlay];
}
- (IBAction) playSound {
[myExampleSound play];
}
这应该将延迟降低到大约 20 毫秒,这可能满足您的需求。如果没有,您将不得不放弃
AVAudioPlayer
并切换到其他播放声音的方式(如 Finch sound engine )。另请参阅我自己关于 lags in AVAudioPlayer 的问题。