C# 电影结束时停止播放视频XNA

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;

我正在XNA播放一部.wmv电影。我在播放它时没有问题,但我似乎无法检测到电影是否结束并停止播放

我是这样做的:

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不起作用。无论如何,谢谢!