如何在页面完全加载之前阻止SoundEffect播放

时间:2012-01-18 05:20:18

标签: windows-phone-7

在我的Windows Phone 7应用程序中,我使用以下代码导航到页面

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

在Game.xaml.cs的OnNavigatedTo事件中,我使用以下代码一个接一个地播放两个wav文件。为了让我同时防止两个音频播放,我使用while循环等到第一个音频播放完毕然后播放第二个文件。我相信这是在显示游戏页面之前导致第一个音频播放的原因。有没有更好的方法呢?

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类的一个属性。

private SoundEffectInstance _MySoundEffect;

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

每当用户点击按钮,声音

1 个答案:

答案 0 :(得分:1)

要在标题中回答您的问题,您可以尝试使用相同的问题    Loaded    事件处理程序而不是OnNavigateTo。这样,您的音频文件就会开始播放    仅在页面加载后。