2012-01-18 11 views
0

をロードされる前に、私はGame.xamlのOnNavigatedToイベントでページは、ページが完全に私のWindows Phone 7のアプリで

private void button2_Click(object sender, RoutedEventArgs e) 
     { 
      NavigationService.Navigate(new Uri("/Views/Game.xaml, UriKind.RelativeOrAbsolute)); 
     } 

に移動するには、次のコードを使用してい遊んでからとSoundEffectを防ぎます。私は次のコードを次々に2つのwavファイルを再生するために使用します。両方のオーディオ再生を同時に防止するために、whileループを使用して、最初のオーディオが終了してから2番目のファイルが再生されるまで待機します。私はこれが、ゲームのページが表示される前に最初のオーディオが再生される原因だと考えています。これを行うより良い方法はありますか?

protected override void OnNavigatedTo(System.Windows.Navigation.NavigationEventArgs e) 
{    
    playAudio("intro.wav"); 
    while (MySoundEffect.State == SoundState.Playing) 
    { 
    } 

    playAudio("firstQuestion.wav"); 

    base.OnNavigatedTo(e);     
} 

以下はplayAudioのコードです。

protected void playAudio(string fileName) 
     { 
      Stream stream = TitleContainer.OpenStream("audio/" + fileName); 
      SoundEffect effect = SoundEffect.FromStream(stream); 
      MySoundEffect = effect.CreateInstance(); 
      FrameworkDispatcher.Update(); 
      MySoundEffect.Play(); 
     } 

MySoundEffectはGameクラスのプロパティです。ユーザーがボタン、タイトルにあなたの質問に答えるために、音

答えて

1

をクリックするたびに

private SoundEffectInstance _MySoundEffect; 

     public SoundEffectInstance MySoundEffect 
     { 
      get { return _MySoundEffect; } 
      set { _MySoundEffect = value; } 
     } 

、あなたの代わりにOnNavigateToLoaded イベントハンドラと同じことを試みることができます。こうすると、ページがロードされた後にオーディオファイルの再生が開始されます( )。

関連する問題