2

映画を表示するアプリケーションがあります。最初の画面には、さまざまなモーダルビューを表示するボタンが表示されます。これらのモーダルビューの中には、ビデオを再生するボタンがあります。

メインメニューで音楽を再生したいのですが(十分に簡単です)、2番目のモーダルビューまでそれを維持したいのですが、ビデオの再生が開始されたら停止します。

映画のボタンを押したときに[audioPlayerstop]を試しましたが、音楽が再生され続けます。

viewDidAppearとviewDidDisappearでオーディオを停止して再生してみました。これにより、2番目のビューが表示され、ビデオ中に再生されなくなったときにオーディオが再起動しました。

これが理にかなっていることを願っています。映画の再生中を除いて、オーディオを常に(2つまたは3つのモーダルビュー全体で)再生する方法についてのアイデアが本当に必要です。

これが私のvewDidAppear方法です:

-(void)viewDidAppear:(BOOL)animated {
   NSString *musicPath = [[NSBundle mainBundle] pathForResource: @"Intro Music" ofType:@"mp3"]; 
   if(musicPath) {
     NSURL *musicURL = [NSURL fileURLWithPath:musicPath];
     audioPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:musicURL error:nil];
     [musicURL release]; 
   }
   if(!audioPlayer.playing) {
     [audioPlayer play]
   }
}
4

1 に答える 1

1

audioPlayerモーダル ビュー コントローラは、内部に存在しないを停止しようとしています。mainMenueViewControllerがあるaudioPlayerので、オーディオ プレーヤーに停止するように指示する必要があります。

これには NSNotifications を使用できます。各NSNotificationは、シングルトンNSNotificationCenterを介して送信されます。状況に応じた基本的な手順は次のとおりです。

  1. メイン メニューは、準備ができたときに通知を登録します。
  2. メイン メニューには、通知が発生したときに呼び出すメソッドがあります。
  3. サブメニューは、オーディオをオフにする必要があるときにメソッドを起動します。
  4. 閉じる準備ができると、メイン メニューの登録が解除されます。

お役に立てれば!

于 2011-03-23T14:20:49.940 に答える