2011-04-06 61 views
0

我有一個avaudioplayer的問題。我有一個播放音樂的方法:avaudioplayer問題

-(void)playBgMusic { 

NSString *path = [[NSBundle mainBundle] pathForResource:@"bgmusic" ofType:@"aif"]; 
theAudio = [[AVAudioPlayer alloc] initWithContentsOfURL:[NSURL fileURLWithPath:path] error:NULL]; 
theAudio.delegate = self; 
[theAudio play]; } 

這就是所謂的viewDidLoad方法:

- (void)viewDidLoad { 
[super viewDidLoad]; 

[self playBgMusic]; } 

現在的問題:當我切換到另一個展示的音樂繼續,但是當我去再次回到音樂開始第二次和重疊。

我該如何解決這個問題?

回答

0

爲什麼在-viewDidLoad開始音樂?把它放在你的控制器的初始化器中。如果你只是一個XIB創造它和尚未覆蓋的初始化,執行-initWithCoder:,像這樣:

- (id)initWithCoder:(NSCoder *)coder 
{ 
    self = [super initWithCoder:coder]; 

    if(self) 
    { 
     [self playBgMusic]; 
    } 

    return self; 
} 

...或者,如果你分配/手動初始化它,做同樣的事情,但與-init(或您設置的任何自定義初始化程序)相反。這樣,音樂播放器只會在您第一次創建視圖控制器時纔會啓動,從視覺控制器的聲音中您可能只做一次。

+0

非常感謝,你知道當聲音結束時我應該做什麼,無論在哪個視圖控制器中? – Leon 2011-04-06 17:44:15