-(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];
}
单击按钮时我想发出哔哔声。我使用了上面的代码。但播放声音需要一些延迟。
任何人都请帮忙。
答案 0 :(得分:8)
延迟有两个来源。第一个更大,可以使用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的问题。
答案 1 :(得分:1)