0

我正在 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.Stopped 所以我试图停止它并将它的纹理设置为空。但是电影循环播放并再次播放。我包括了 player.isLooped = false; 但电影仍然循环播放。关于导致问题的任何想法?

4

1 回答 1

1

我认为这是因为在您的 Update() 循环中,您不断调用 player.Play() (在 MediaState 第一次点击 Stopped 之前,playIntroMovie 将始终为真)。

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

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

if (player.State == MediaState.Stopped)
{
   player.Stop();
   videoTexture = null;
}
于 2013-03-04T12:24:02.113 回答