2011-02-24 42 views
0

对,对不起,如果我看起来像一个菜鸟,但我是新来的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]; 
} 

我会非常感激,如果有人可以帮助我。

谢谢。

回答

1

如果其他声音还在打,你需要告诉它停止。你可能要考虑使用另AVAudioPlayer的调用stop方法。所以,像,你必须:

[myAudio play]; 

...之前只是插入一个方法调用来告诉其他声音停止。

[myOtherAudioThatsPlaying stop]; 
[myAudio play]; 

也可以浏览AVAudioPlayer documentation

0

虽然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刚刚被释放。

相关问题