Почему SWF-файл в C # не останавливается при использовании AxShockwaveFlash - PullRequest
0 голосов
/ 11 апреля 2009

Мне нужно воспроизводить различные SWF-файлы в приложении C #.

Кажется, что они начинают играть нормально, но попытка сделать паузу в первый раз не имеет никакого эффекта, и если я попробую еще раз, панель исчезает.

Код, который я использую, ниже.

Также перемотка вперед и назад не имеет никакого эффекта.

Любые комментарии или помощь будут оценены.

Дэвид Найт

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();
        }
    }
}

1 Ответ

1 голос
/ 06 мая 2011

Я только что разработал проект на c # для встраивания flash-объекта в WPF UserControl, который должен встраивать Windows Forms UserControl, чтобы иметь возможность его воспроизводить.

Итак, мой опыт показывает, что Stop () метод axShockwaveFlashObjects фактически приостанавливает фильм, а Play () фактически возобновляет фильм (также начинает его).

Вот код, который я использую в пользовательском элементе управления Windows Forms для воспроизведения, приостановки, возобновления и остановки SWF-объекта:

    /// <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;
    }
...