2013-08-25 88 views
0

我試圖播放聲音使用AVAudioPlayer沒有成功。我已經在iOS模擬器和iPhone上嘗試過了。我沒有得到任何錯誤,但我也聽不到聲音。沒有聲音使用AVAudioPlayer

這裏是我的代碼:

NSString *soundFilePath = [[NSBundle mainBundle] pathForResource: @"RiggerSound_Click" ofType: @"wav"]; 
    NSLog(@"Path is %@", soundFilePath); 

    NSURL *fileURL = [[NSURL alloc] initFileURLWithPath: soundFilePath]; 

    NSError *error; 
    AVAudioPlayer *newPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL: fileURL error: &error]; 
    [fileURL release]; 

    if (newPlayer != nil) 
    { 
     if(![newPlayer play]) 
      NSLog(@"Error playing"); 

     [newPlayer release]; 
    } 
    else 
     NSLog(@"Error creating audioPlayer: %@", [error localizedDescription]); 

的soundFilePath是「/用戶/ MYNAME /庫/應用程序支持/ iPhone模擬器/ 6.1 /應用/ E50059DD-B328-45C7-A5D5-C650F415B183/appname.app/RiggerSound_Click.wav」。

「newPlayer」變量不爲空,[newPlayer play]不會失敗。

文件「RiggerSound_Click.wav」顯示在我的項目的Resources文件夾中。我可以在項目中選擇它,點擊播放按鈕,然後聽到聲音。

我很難過。

感謝您的幫助。

+0

有你爲你的應用程序設置了一個AVAudioSession? –

+2

釋放玩家就沒有保留另一參考值將保持它打 –

回答

0

在播放之前設置AVAudioPlayer的委託。例如,

newPlayer.delegate = self; 

此外,請確保您的代理的類符合AVAudioPlayerDelegate協議:

MyClass : Superclass <AVAudioPlayerDelegate> 
-1

只要定義AVAudio播放靜態

static AVAudioPlayer *newPlayer = Nil; 
if(newPlayer == Nil) 
{ 
    newPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL: fileURL error: &error]; 
} 

就是這樣

+0

不,應該是一個實例變量! – trojanfoe