2010-06-18 73 views
1

我是一个完整的WPF初学者,并有一个使用StoryBoard播放声音的应用程序。WPF Storyboard延迟播放wma文件

public void PlaySound() 
{ 
MediaElement m = (MediaElement)audio.FindName("MySound.wma"); 
m.IsMuted = false; 
FrameworkElement audioKey = (FrameworkElement)keys.FindName("MySound"); 
Storyboard s = (Storyboard)audioKey.FindResource("MySound.wma"); 
s.Begin(audioKey); 
} 

<Storyboard x:Key="MySound.wma"> 
<MediaTimeline d:DesignTimeNaturalDuration="1.615" BeginTime="00:00:00" Storyboard.TargetName="MySound.wma" Source="Audio\MySound.wma"/> 
</Storyboard> 

我有一个可怕的滞后,有时需要10秒才能播放声音。 我怀疑这与这样一个事实有关,无论我等待多久 - 声音直到离开函数之后才播放。我不明白。我打电话给Begin,没有任何反应。有没有办法将这种方法或StoryBoard对象替换为即时播放而没有滞后的东西?

回答

1

我改变了我的代码 -

<Button Cursor="Hand" HorizontalAlignment="Left" Margin="70,0,0,0" x:Name="MyButton" Width="286" Content="Hi!" Focusable="False" IsTabStop="False"> 
     <Button.Triggers> 
      <EventTrigger RoutedEvent="Button.PreviewMouseLeftButtonDown"> 
       <EventTrigger.Actions> 
        <BeginStoryboard> 
         <Storyboard SlipBehavior="Slip" BeginTime="00:00:00"> 
          <MediaTimeline Storyboard.TargetName="MySound_wma" Source="MySound.wma"/> 
         </Storyboard> 
        </BeginStoryboard> 
       </EventTrigger.Actions> 
      </EventTrigger> 
    </Button.Triggers> 
</Button> 

而且似乎现在的工作很好,谢谢的xD