0

C# アプリケーションでさまざまな swf ファイルを再生する必要があります。

正常に再生を開始しているように見えますが、一時停止しようとしても 1 回目は効果がなく、もう一度試すとパネルが真っ白になります。

私が使用しているコードは以下のとおりです。

また、巻き戻しと早送りは効果がありません。

コメントやヘルプをいただければ幸いです。

デビッド・ナイト

namespace MyUI
{
    public partial class ABWithSWF : MyAbstractABFrm
    {
        // Keep Track of whats happening
        enum StateOfPlay {NotSet, Playing, Paused };

        private AxShockwaveFlashObjects.AxShockwaveFlash axShockwaveFlashCube = new AxShockwaveFlashObjects.AxShockwaveFlash();

        StateOfPlay playState = StateOfPlay.NotSet;

        public ABWithSWF()
        {
            InitializeComponent();
            pnlSwf.Controls.Add(axShockwaveFlashCube);
            axShockwaveFlashCube.Dock = DockStyle.Fill;
        }

        // One button that is either play or pause
        private void btnPlay_Click(object sender, EventArgs e)
        {
            // File to play
            string path = string.Format(@"{0}\graphical summary.swf", Utils.GetSWFPath());

            switch (playState)
            {
                case StateOfPlay.Paused:
                    axShockwaveFlashCube.Play();
                    btnPlay.ImageIndex = 3;
                    playState = StateOfPlay.Playing;
                    break;
                case StateOfPlay.Playing:
                    axShockwaveFlashCube.StopPlay();
                    btnPlay.ImageIndex = 4;
                    playState = StateOfPlay.Paused;
                    break;
                case StateOfPlay.NotSet:
                    axShockwaveFlashCube.LoadMovie(0, path);
                    axShockwaveFlashCube.Play();
                    btnPlay.ImageIndex = 4;
                    playState = StateOfPlay.Playing;
                    break;
            }
        }

        private void button2_Click(object sender, EventArgs e)
        {
            axShockwaveFlashCube.Rewind();
        }

        private void button3_Click(object sender, EventArgs e)
        {
            axShockwaveFlashCube.Forward();
        }
    }
}
4

1 に答える 1

1

フラッシュオブジェクトをWPFUserControlに埋め込むプロジェクトをc#で開発しました。これを再生するには、WindowsフォームUserControlを埋め込む必要があります。

したがって、私の経験では、axShockwaveFlashObjectsのStop()メソッドが実際にムービーを一時停止し、Play()が実際にムービーを再開しています(これも開始しています)。

swfオブジェクトを再生、一時停止、再開、および停止するためにWindowsフォームUserControlで使用するコードは次のとおりです。

    /// <summary>
    /// Starts playing the movie, or resumes
    /// it if it is paused.
    /// </summary>
    public void Play()
    {
        Stop();
        flash_control.Play();
    }

    /// <summary>
    /// Pauses the movie. To resume it, 
    /// call <see cref="Play()"/>.
    /// </summary>
    public void Pause()
    {
        flash_control.Stop();
    }

    /// <summary>
    /// Stops playing the movie
    /// </summary>
    public void Stop()
    {
        flash_control.Stop();
        flash_control.FrameNum = 0;
    }
于 2011-05-06T11:33:04.183 に答える