看看AVAudioPlayer
,你可以設置和重新使用。但更重要的是,當你設置它時,你可以告訴它「準備播放」,它將聲音預加載到內存中。所以,當你真的告訴玩家玩,它立即播放。我方便,最近寫了這個方法的東西,它創建並返回一個AVAudioPlayer
對象:
+(AVAudioPlayer *)playerForFile:(NSString *)fileName
{
NSString *filePath = [[NSBundle mainBundle] pathForResource:fileName ofType:@"caf"];
NSURL *url = [NSURL fileURLWithPath:filePath];
NSData *soundData = [NSData dataWithContentsOfURL:url];
NSError *error = nil;
AVAudioPlayer *player = [[[AVAudioPlayer alloc] initWithData:soundData error:&error] autorelease];
if (error)
NSLog(@"error creating player for %@: %@", fileName, [error localizedDescription]);
return (error ? nil : player);
}
某處在您的應用程序,你可能建立一個球員的對象,像這樣:
AVAudioPlayer *buzzSoundPlayer = [MyClass playerForFile:@"buzz"];
if (buzzSoundPlayer) {
[buzzsoundPlayer prepareToPlay];
}
當你要玩聲音:
[buzzSoundPlayer setCurrentTime:0];
[buzzSoundPlayer play];
您必須將當前時間設置爲0,即聲音文件的開頭,每次你玩它,因爲聲音結束時,解放軍時間ying,「當前時間」在最後。所以後續的播放它的請求將不起作用。所以我們將當前時間設置回到開始。
您也可以爲您的播放器設置delegate
,並在聲音播放結束後通過委託方法通知您。或者,您可以將當前時間重置爲0。
您可以在Apple的文檔中閱讀關於AVAudioPlayer
和AVFoundation
的全部內容。
我絕對想在應用程序啓動時加載。感謝您的信息。然而,請原諒我的無知,但我不明白你的答案。 SELECTOR會是什麼? – Rick