声音打在对方使用AVAudioPlayer
问题描述:
对,对不起,如果我看起来像一个菜鸟,但我是新来的Xcode。我目前正在制作一个音板,并且我已经准备好所有的按钮来播放它们发出的声音。声音打在对方使用AVAudioPlayer
但是,如果一个播放声音时,当我按下另一个按钮,而不是停止原来的声音,它只是起到了它,所以我游荡,如果有人知道如何解决这个问题?
下面是我使用的按钮代码:
- (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];
}
我会非常感激,如果有人可以帮助我。
谢谢。
答
如果其他声音还在打,你需要告诉它停止。你可能要考虑使用另AVAudioPlayer的调用stop
方法。所以,像,你必须:
[myAudio play];
...之前只是插入一个方法调用来告诉其他声音停止。
[myOtherAudioThatsPlaying stop];
[myAudio play];
答
虽然bobtiki的答案在形式上是正确的,但如果您希望在声音停止后对声音做一些有用的操作(例如再次开始播放),则只需调用stop
方法即可。既然你只是想摆脱它,我建议让玩家取消分配,这会自动停止播放声音。 所以,与其
AVAudioPlayer* myAudio=[[AVAudioPlayer alloc] initWithContentsOfURL:[NSURL fileURLWithPath:path] error:NULL];
一个实例变量添加到您的类:
AVAudioPlayer* myAudio;
就用
myAudio=[[AVAudioPlayer alloc] initWithContentsOfURL:[NSURL fileURLWithPath:path] error:NULL];
每当一个新的声音p奠定,myAudio
被分配一个新的指针和老AVAudioPlayer
刚刚被释放。