对,抱歉,如果我看起来像一个菜鸟,但我是xcode的新手。我正在制作一个音板,我有所有的按钮来工作和播放他们的声音。
然而,如果正在播放一个声音,当我按下另一个按钮,而不是停止原始声音时,它只是在它上面播放,所以如果有人知道如何解决这个问题,我就会徘徊?
这是我用于按钮的代码:
- (IBAction)playsound {
NSString *path = [[NSBundle mainBundle] pathForResource:@"Gold" ofType:@"mp3"];
AVAudioPlayer* myAudio=[[AVAudioPlayer alloc] initWithContentsOfURL:[NSURL fileURLWithPath:path] error:NULL];
myAudio.delegate = self;
myAudio.volume = 2.0;
myAudio.numberOfLoops = 0;
[myAudio play];
}
如果有人可以帮助我,我真的很感激。
感谢。
答案 0 :(得分:1)
如果其他声音仍在播放,您需要告诉它停止播放。您可能希望在另一个AVAudioPlayer上调用stop
方法。所以,就像你在哪里:
[myAudio play];
...在此之前插入一个方法调用,告诉其他声音停止。
[myOtherAudioThatsPlaying stop];
[myAudio play];
答案 1 :(得分:0)
虽然bobtiki的答案在形式上是正确的,但是如果你想在声音停止后对声音做一些有用的事情,例如再次开始播放它,那么调用stop
方法才有意义。因为你只是想摆脱它,我建议玩家只需要取消分配,这会自动使声音停止播放。
所以,而不是
AVAudioPlayer* myAudio=[[AVAudioPlayer alloc] initWithContentsOfURL:[NSURL fileURLWithPath:path] error:NULL];
向您的班级添加实例变量:
AVAudioPlayer* myAudio;
然后只需使用
myAudio=[[AVAudioPlayer alloc] initWithContentsOfURL:[NSURL fileURLWithPath:path] error:NULL];
每次播放新声音时,都会为myAudio
分配一个新指针,而旧AVAudioPlayer
只会被取消分配。