![](/img/trans.png)
[英]ios - AVAudioPlayer - audioPlayerDidFinishPlaying is sometimes called at random times in a clip
[英]AVAudioPlayer audioPlayerDidFinishPlaying called when the file is played second time
我正在使用AVAudioPlayer類來播放音頻,但問題是當我播放音頻時,我沒有收到audioPlayerDidFinishPlaying中的回調,當文件完成播放時,即使循環次數設置為1,文件也會再次啟動
這是代碼。
。H
@interface AudioController : NSObject <AVAudioPlayerDelegate>
-(void) playBigGameTheme{
-(void) playMusic:(NSString*) fileName isLooping: (BOOL) isLooping;
@end
.M
@implementation AudioController{
AVAudioPlayer *audioPlayer;
}
-(void) playMusic:(NSString*) fileName isLooping: (BOOL) isLooping{
int loop = 1;
if(isLooping){
loop = -1;
}
[audioPlayer stop];
NSURL* soundUrl = [NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:fileName ofType:@"mp3"]];
audioPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:soundUrl error:nil];
audioPlayer.numberOfLoops = loop;
[audioPlayer setDelegate:self];
NSLog(@"===Number of loops : %d", audioPlayer.numberOfLoops);
[audioPlayer play];
}
- (void) audioPlayerDidFinishPlaying:(AVAudioPlayer *)player successfully:(BOOL)flag
{
NSLog(@"HERE");
}
-(void) playBigGameTheme{
[self playMusic:BGAME_MAIN_MUSIC_FILE_NAME isLooping:NO];
}
@end
當我打電話給playBigGameTheme時,音頻開始正常播放。 但是當聲音結束並且音頻第二次結束時它會重新啟動,然后只調用audioPlayerDidFinishPlaying方法。
我被困住了,不知道什么是錯的..
即使循環次數設置為1
這正是原因所在。 此屬性的名稱和行為有點違反直覺,但如果您已閱讀文檔,則很明顯它會設置重復次數,而不是播放次數。 從文檔引用:
值0(默認值)表示播放一次聲音。
因此將其設置為0(或者不設置它,零是默認值)並且它將僅播放音頻文件一次:
audioPlayer.numberOfLoops = 0;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.