2010-04-20 70 views
0

我正在播放一個wav文件,以便在按下我的UI中的按鈕時發出一點音頻反饋。我的問題是當你第一次按下按鈕有一個延遲(約1.5秒),同時聲音文件「sound.wav」被加載和緩存。有沒有辦法預先緩存這個文件(也許在我的viewDidLoad)?我想我可以通過播放一個viewDidLoad來做到這一點,但真的需要禁用音頻,所以每次應用程序啓動時它都不會「beeb」。使用SystemSoundID預加載* .wav?

非常感謝和幫助。

加里

EDIT_001: 看起來像我的問題是this post重複,除非任何人有任何新的信息?也許可以暫時將播放音量關閉,除非每次通過運行循環清除音頻。

EDIT_002: 我目前使用SystemSoundID/AudioServices:

-(void)playButtonSound { 
    NSBundle *bundle = [NSBundle mainBundle]; 
    NSString *soundPath = [bundle pathForResource:@"buttonClick_002" ofType:@"wav"]; 
    SystemSoundID soundID; 
    AudioServicesCreateSystemSoundID((CFURLRef)[NSURL fileURLWithPath:soundPath], &soundID); 
    AudioServicesPlaySystemSound(soundID); 
} 
+0

我覺得你剛纔已經回答你自己的問題。您需要靜靜地加載它,隨時可以按需使用。它是一種類似的方法,當你想要翻轉圖像。 – thecoshman 2010-04-20 12:09:29

+0

你知道我怎麼可能默默地加載它,或者沒有音頻播放它?我將播放它可能只是不調用「AudioServicesPlaySystemSound(soundID)」的情況; – fuzzygoat 2010-04-20 12:11:09

+0

我不知道iPhone API如何工作。但我認爲你可以將音頻加載到應用程序的變量中?我的圖像可能還可以設置您想要播放一段音頻的音量。我非常懷疑你的唯一選擇是立即加載和播放全音量的音頻(當然是由電話用戶設置) – thecoshman 2010-04-20 12:14:58

回答

0

最後,我居然發現,使用AVAudioPlayer允許我這樣做,我使用(見下文)viewDidLoad中做預加載所需的預緊力:在

[audioPlayer prepareToPlay]; 

,然後使用(見下文)按鈕方法,我需要聲音按需播放。

[audioPlayer play]; 

加里

0

使用performSelectorInBackground:@selector(<A SELECTOR>)當視圖加載到wav文件加載到內存中。然後在需要時播放聲音;)

希望這有助於!

+0

謝謝,我不知道那個... – fuzzygoat 2010-04-20 18:12:17