我有一个声音播放器类,根本没有任何视觉效果,我正在尝试使用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;
}
}
我仔细检查了该文件是否存在(它确实存在)(甚至已正确加载),并且我的声音已打开。 :-) 另外,当我改变MediaElement
by SoundPlayer
,它工作得很好。我能发现的唯一区别是我没有将其嵌入到 XAML 代码中。这是一个要求吗?
为了工作,MediaElement 必须是应用程序逻辑树的一部分,因此必须添加到应用程序中的某个容器(Grid、StackPanel)中。
您可以通过 XAML 添加 MediaElement(就像您之前所做的那样),也可以在运行时通过
LayoutRoot.Children.Add(player);
您应该使用而不是使用 MediaElement媒体播放器 http://msdn.microsoft.com/en-us/library/system.windows.media.mediaplayer.aspx班级。这将在不将其附加到 XAML 的情况下工作(至少对我来说)。
MediaPlayer player = new MediaPlayer();
player.Open(new Uri(fileName, UriKind.RelativeOrAbsolute));
player.Play();
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)