2011-02-24 44 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剛剛被釋放。

相關問題