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

时间:2013-03-04 07:30:25

标签: c# xna movie video-player

我正在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);
        }

我知道如果moview已经结束,它的状态将返回MediaState.Stopped所以我试图阻止它并将其纹理设置为null。但电影又循环播放了。我包括了player.isLooped = false;但电影仍在循环中。关于导致问题的原因的任何想法?

1 个答案:

答案 0 :(得分:1)

我认为这是因为在你的Update()循环中,你经常调用player.Play()(playIntroMovie将一直为真,直到MediaState第一次命中Stopped为止。)

处理Update()循环逻辑的更好方法是这样的:

if (playIntroMovie == true)
{
    player.Play(video);
    playIntroMovie = false;
    player.Volume = 1;
}

if (player.State == MediaState.Stopped)
{
   player.Stop();
   videoTexture = null;
}