2009-08-21 2 views
2

Mein Projekt erfordert, dass meine endgültige Anwendung vollständig in einer einzelnen exe enthalten ist. Ich kombiniere bereits die ausführbare Datei und dlls mit ILMerge (assmbly merge-Dienstprogramm). Ich hosting ein Flash-ActiveX-Steuerelement in einer C# -Anwendung und ich habe das eine swf ich muss in das Flash-Steuerelement in die C# -Anwendung als eingebettete Ressource zu laden.C#: Laden eines eingebetteten swf in einen flash activex ohne eine temporäre Datei

This question shows how to write the resource to a temporary file, aber es ist nicht wünschenswert, temporäre Dateien für meine Situation zu erstellen. Dies führt zu einem Problem, da die loadMovie-Methode für das aktive x-Steuerelement nur eine Zeichenfolge akzeptiert, die auf die zu ladende Datei verweist.

Meine Frage ist: Ist es möglich, eingebettete SWF-Ressourcen dynamisch in ein Flash-ActiveX-Steuerelement zu laden, ohne eine temporäre Datei zu erstellen?

+0

Sie ‚loadmovie‘ erwähnt haben, das bedeutet, dass Sie mithilfe von Actionscript 2. Wenn Sie actionscript 3 verwenden, können Sie einfach das swf einbetten, das mit dem Embed-Tag in das Haupt-swf geladen werden soll, das mxmlc, mit dem der Compiler umgehen kann. Ich könnte einen URLLoader oder einen URLStream erstellen, den Header so einstellen, dass er binäre Daten akzeptiert, und C# mitteilen, dass er swf-Bytes senden soll. Wenn dies abgeschlossen wäre, würden Sie ein Loader-Objekt erstellen und Byte mit loadBytes einspeisen, wodurch das Bytearray in ein DisplayObject konvertiert wird. Macht das Sinn ? –

+0

Die loadMovie-Methode ist eine C# -Methode für den Flash-ActiveX-Steuerelement. – JohnU

Antwort

1

Die Lösung, die ich am Ende verwendete, war, alle erforderlichen SWF-Dateien in die Bibliothek eines Wrapper-SWF zu packen.

Dann legte ich die Film-Eigenschaft des ActiveX-Steuerelements auf die Wrapper-SWF und legte das Embed-Flag auf dem ActiveX-Steuerelement auf True. Dies bettet dieses swf direkt in das ActiveX-Steuerelement ein. Ich lade nie in die C#, sondern ich rufe nur die play() -Methode auf dem aktiven x-Steuerelement, um die swf-Datei zu initialisieren, die eingebettet wurde.

Grundsätzlich, wenn ich eine Ressource einbetten, es gibt keine Notwendigkeit, es in der C# zu tun, kann ich es einfach in der swf einbetten. Ich habe dann alle meine Be- und Entladung im Flash Wrapper swf gemacht.

1

Sie die SWF-Datei auf die Ressourcen dann auf runtinme hinzufügen können lesen Sie die Datei als ein Array von Bytes die es zu diesem function senden

System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(YourForm)); 
System.Byte[] data = (System.Byte[])(resources.GetObject("FileName"));