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 に戻ることがわかっているので、停止してテクスチャを null に設定しようとしています。しかし、ムービーはループして再び再生されます。player.isLooped = false; を含めました。しかし、映画はまだループします。問題の原因についてのアイデアはありますか?

4

1 に答える 1

1

Update() ループで、 player.Play() を常に呼び出しているためだと思います (PlayIntroMovie は、MediaState が初めて Stopped になるまで常に true になります)。

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 に答える