C# 电影结束时停止播放视频XNA
我正在XNA播放一部.wmv电影。我在播放它时没有问题,但我似乎无法检测到电影是否结束并停止播放 我是这样做的:C# 电影结束时停止播放视频XNA,c#,xna,movie,video-player,C#,Xna,Movie,Video Player,我正在XNA播放一部.wmv电影。我在播放它时没有问题,但我似乎无法检测到电影是否结束并停止播放 我是这样做的: Video video; VideoPlayer player; 关于更新方法: //Playing the movie #region if (playIntroMovie == true) { player.Play(video); player.Volume = 1;
Video video;
VideoPlayer player;
关于更新方法:
//Playing the movie
#region
if (playIntroMovie == true)
{
player.Play(video);
player.Volume = 1;
if (player.State == MediaState.Stopped)
{
player.Stop();
videoTexture = null;
playIntroMovie = false;
}
}
#endregion
抽签方式:
if (player.State != MediaState.Stopped)
videoTexture = player.GetTexture();
if (videoTexture != null)
{
spriteBatch.Draw(videoTexture, fullScreenRec, Color.White);
}
我知道如果电影已经结束,它的状态将返回到MediaState。已停止,所以我尝试停止它,并将其纹理设置为null。但这部电影循环播放。我包括player.isLooped=false;但这部电影仍然循环播放。你知道是什么导致了这个问题吗?我认为这是因为在Update()循环中,你不断地调用player.Play()(在MediaState第一次停止点击之前,playIntroMovie将始终为真) 处理Update()循环逻辑的更好方法如下:
if (playIntroMovie == true)
{
player.Play(video);
playIntroMovie = false;
player.Volume = 1;
}
if (player.State == MediaState.Stopped)
{
player.Stop();
videoTexture = null;
}
我试着在我的update方法()上实现它,但我认为它是基于输出的。这部电影总是假的。因此,玩家不会玩。我尝试在播放器状态检查中移动playintroMovie=false。结果,视频仍然循环:(我最终能够使用不同的方法停止视频。我根据视频的长度设置了延迟,延迟后,我将停止视频。我不知道为什么player.State==MediaState.Stopped不起作用。无论如何,谢谢!