Yel*_*low 5 c# audio wpf xaml mediaelement
我有一个声音播放器类,根本没有任何视觉效果,我正在尝试使用a MediaElement
播放我的声音.在所有测试项目中,它MediaElement
都嵌入在XAML代码中,它工作正常.但是,在我的仅代码版本中,即使文件已经完全加载(我可以在调试器中看到),它根本不会播放任何内容.我正在做以下事情:
public class MySoundPlayer
{
private MediaElement player = new MediaElement();
public MySoundPlayer()
{
player.LoadedBehavior = MediaState.Manual;
player.UnloadedBehavior = MediaState.Stop;
player.Volume = 1.0;
player.MediaEnded += player_MediaEnded;
player.MediaOpened += playerr_MediaOpened;
player.MediaFailed += player_MediaFailed;
}
private void player_MediaEnded(object sender, EventArgs e)
{
player.Stop();
Debug.WriteLine("Stopped");
}
private void player_MediaOpened(object sender, EventArgs e)
{
Debug.WriteLine("Opened");
}
private void player_MediaFailed(object sender, ExceptionRoutedEventArgs e)
{
Debug.WriteLine("Failed");
}
public void PlayFile(string fileName, bool loop)
{
player.Source = new Uri(fileName, UriKind.RelativeOrAbsolute);
player.Play();
player.Volume = 1.0;
}
}
Run Code Online (Sandbox Code Playgroud)
我仔细检查文件是否存在,它是否存在(甚至正确加载),并且我的声音已打开.:-)此外,当我改变MediaElement
的SoundPlayer
,它完美的罚款.我能找到的唯一区别是我没有嵌入XAML代码中.这是一个要求吗?
为了工作,MediaElement必须是应用程序逻辑树的一部分,因此必须添加到应用程序中的某个容器(Grid,StackPanel)中.
您可以通过XAML添加MediaElement(如前所述),也可以在运行时通过XAML添加
LayoutRoot.Children.Add(player);
Run Code Online (Sandbox Code Playgroud)
您应该使用MediaPlayer类,而不是使用MediaElement .这将起作用(至少对我而言)而不将其附加到XAML.
MediaPlayer player = new MediaPlayer();
player.Open(new Uri(fileName, UriKind.RelativeOrAbsolute));
player.Play();
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
4147 次 |
最近记录: |