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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了停止在电影XNA结束时播放视频相关的知识,希望对你有一定的参考价值。

我在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;但电影仍在循环中。什么导致问题的任何想法?

答案

我认为这是因为在你的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;
}

以上是关于停止在电影XNA结束时播放视频的主要内容,如果未能解决你的问题,请参考以下文章

XNA 声音开始或停止播放时的小噪音

当另一个声音使用 XNA/XACT 结束时,如何立即播放一个声音?

如何播放来自两个不同来源的音频和视频?

视频播放停止时如何切换到活动

视频播放时停止轮播 - Bootstrap 4

电影播放器​​不会在表格单元格中停止