2009-04-11 6 views
0

Ich muss verschiedene SWF-Dateien in einer C# -Anwendung wiedergeben.Warum wird eine SWF-Datei in C# nicht angehalten, wenn AxShockwaveFlash verwendet wird

Sie scheinen zu spielen gut, aber zu versuchen, es zu pausieren hat keine Wirkung beim ersten Mal und weiß das Panel, wenn ich es erneut versuche.

Der Code, den ich verwende, ist unten.

Auch Rücklauf & vorwärts haben keine Wirkung.

Irgendwelche Kommentare oder Hilfe würden geschätzt.

David Knight

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

Antwort

1

Ich habe gerade ein Projekt in C# entwickelt ein Flash-Objekt in einen WPF-Usercontrol, die ein Windows Forms-Benutzersteuerelement einzubetten hat einbetten können, um es zu spielen.

So ist meine Erfahrung, dass Stop() methd der axShockwaveFlashObjects tatsächlich ist der Film und Wiedergabe pausieren() tatsächlich der Film wieder aufnehmen (auch es beginnt). Hier

ist der Code, den ich in meinem Windows verwenden Forms Usercontrol auf Play, Pause, Fortsetzen und Beenden einer SWF-Objekt:

/// <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; 
    } 
Verwandte Themen