2010-02-01 3 views
2

Je me demandais s'il était possible de lire-écrire (ou de sauvegarder/charger) AxShockwaveFlash Flash Objet dans un fichier (binaire/texte)?Écriture d'un objet Flash AxShockwaveFlash dans un fichier C#

J'ai un Winform avec AxShockwaveFlash Flash Object sur elle et que vous voulez qu'il soit enregistrer dans un fichier
, mais ne marche pas sérialisation fonctionne pas en tant que type AxShockwaveFlash n'est pas marqué pour la sérialisation?
(Essayant essentiellement d'écrire dynamiquement .swf dans un fichier.)

Des idées?

Merci et salutations
Amit

Répondre

1

J'ai essayé ceci et cela a fonctionné pour moi.

J'ai dervi une classe de AxShockwaveFlashObjects.AxShockwaveFlash et implémenté l'interface ISerializable.

Implémenté GetObjectData et le constructeur de sérialisation. pas beaucoup de codage en eux.

[Serializable()] 
class MyCustomFlash : AxShockwaveFlashObjects.AxShockwaveFlash, ISerializable 
{ 
    public MyCustomFlash() 
    { 

    } 

    public MyCustomFlash(SerializationInfo info, StreamingContext ctxt) 
    { 
     //dont think this is required. 
     this.OcxState = (State)info.GetValue("ocxstate", typeof(State));    

    } 

    #region ISerializable Members 
    public void GetObjectData(SerializationInfo info, StreamingContext context) 
    { 
     //dont think this is required. 
     // info.AddValue("movie", this.Movie); 
     info.AddValue("ocxstate", this.OcxState); 
    } 
    #endregion 
} 

J'utilisais winform. donc vous assurer que vous intégrez le film en utilisant

axShockwaveFlash1.EmbedMovie = true; 
    //loadMovie follows 

Ensuite, essayez Normal binary serialization/deserilzation.

Lors de la désérialisation, j'ai essayé d'ajouter le flash sérialisé à une autre forme.
Mais continuez à obtenir AxHost + InvalidActiveXStateException et le contrôle n'apparaît pas sur le formulaire. Je pense que le contrôle n'a pas été initié sur le formulaire. Copiez simplement le code d'initialisation du concepteur. Ensuite, cela fonctionne.

  string serialFilePath = @"E:\test\serialFiles\DataFile.dat";    
      FileStream myFS = new FileStream(serialFilePath, FileMode.Open); 
      // Create a binary formatter object to deserialize the data 
      BinaryFormatter myBF = new BinaryFormatter(); 

      MyCustomFlash flashObj; 
      //where class MyCustomFlash : AxShockwaveFlashObjects.AxShockwaveFlash, ISerializable 

      flashObj = (MyCustomFlash)myBF.Deserialize(myFS); 
      //this is code from VS designer..need to initialise flash control 
      ((System.ComponentModel.ISupportInitialize)(flashObj)).BeginInit(); 
      myFS.Close(); 
      flashObj.Enabled = true; 
      this.Controls.Add(flashObj); 
      ((System.ComponentModel.ISupportInitialize)(flashObj)).EndInit(); 

      flashObj.Name = "Axflash"; 
      flashObj.Visible = true; 
      flashObj.Location = new System.Drawing.Point(12, 12); 
      flashObj.Size = new System.Drawing.Size(309, 207); 

Hope this helps :)

thx
amitd

Questions connexes