2010-09-16 48 views
1

我hv幾個圖像,我通過for循環顯示這些圖像,所以我得到一個值在mCurrentImageView,它表明哪個圖像當前顯示。Audioplayer玩的條件

現在我想在每個圖像視圖,不同的音頻播放音頻。 對於前,

if(mCurrentImageView ==0) { 
play "a" 
} 
if (mCurrentImageView ==1) 
{ 
play "b" 
} 
.... 

東西像dat。 我不知道如何做到這一點,因爲我應該有一個Audioplayer,它應該根據opf mCurrentImageView的價值播放不同的音頻。

這是我Avaudioplayer代碼

filePath = [[NSBundle mainBundle] pathForResource:@"b"ofType:@"mp3"]; 
    fileURL = [[NSURL alloc] initFileURLWithPath:filePath]; 
    player = [[AVAudioPlayer alloc] initWithContentsOfURL:fileURL error:nil]; 
    [player prepareToPlay]; 
    [player play]; 

PLZ建議,我應該怎麼做才能繼續移動。

關於

回答

3

AVAudioPlayer只允許您在初始化時指定URL,因此,正如eviltrue所說,您必須創建一個新的播放另一個文件。例如。假設你有一個持有物業玩家的路徑和屬性:

@property (readonly, copy) NSArray *paths; 
@property (readwrite, retain) AVAudioPlayer *player; 

而且你已經初始化的路徑:

paths = [[NSArray alloc] initWithObjects:@"a", @"b", @"c", nil]; 

你可以做以下時,圖像的變化:

NSString *path = [paths objectAtIndex:mCurrentImage]; 
filePath = [[NSBundle mainBundle] pathForResource:path ofType:@"mp3"]; 
fileURL = [NSURL fileURLWithPath:filePath]; 
AVAudioPlayer *newPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:fileURL error:nil]; 
self.player = newPlayer; 
[newPlayer release]; 
[self.player prepareToPlay]; 
[self.player play]; 
+0

dats f9 ....但軌道應該匹配的圖像是currenlty view.so正如我問我的問題,如果(圖像== 1){播放track1} ...類似dat的東西。 – iscavengers 2010-09-20 05:17:47

+0

@shishir:是的,那是什麼數組用於 - 看看'[paths objectAtIndex:mCurrentImage]'表達式。 – 2010-09-20 05:29:01

+0

哦,是的... sry ..我錯過了那一行.... – iscavengers 2010-09-20 05:37:23

3

最簡單的解決方案是使用AVAudioPlayer。所以當你想播放新的聲音時,你只需要釋放舊的播放器並用你想播放的文件創建一個新的播放器。

+0

我編輯我的問題,通過添加我的播放器code.So如果我高音20音頻,比我高音創建20 AudioPLayer ???是它像dat? – iscavengers 2010-09-16 09:31:26

+0

不是,你應該在每次需要時摧毀並創建一個新玩家。 – eviltrue 2010-09-21 15:28:20