Ich lade as2 SWF in AIR-Anwendung. Es funktioniert ordnungsgemäß beim Laden von Datei. Aber wenn aus Bytes geladen ist, wird es in irgendeiner Weise gebrochen (es reagiert Maus, aber einige Elemente sind inaktiv)Loader.load und Loader.loadBytes Unterschiede
var bytes:ByteArray = ... //loaded from resources
var loader:Loader = new Loader();
var context:LoaderContext = new LoaderContext(false);
context.allowCodeImport = true; //this is neccessary
// Method 1 - blocks some scripts in loaded SWF
//context.applicationDomain = new ApplicationDomain();
// (application domain has no effect with as2 swf)
//context.securityDomain = SecurityDomain.currentDomain; //gives error 2114: securityDomain must be null
loader.loadBytes(bytes, context);
// Method 2 - loads properly
//loader.load(new URLRequest(file.url));
Warum also nicht einfach laden aus Datei? Meine Ressourcen sind durch Verschlüsselung geschützt und ich kann sie nicht auf die Festplatte ablegen - sie müssen trotzdem geschützt sein.
Welche Tricks gibt es möglicherweise laden von Bytes richtig?
Es gibt similar question, aber in meinem Fall verursacht as2 mehr Probleme.
Danke für die Antwort. Ich frage mich, warum der gleiche AVM1-Code vollständig funktioniert, wenn er aus der Datei geladen wird, und teilweise kaputt ist, wenn er aus Bytes geladen wird. – alxx
ich denke, es ist, weil die 'load' Methode die SWF als Asset behandelt und weiß, dass es in einer AVM1 Instanz ausgeführt wird, während die 'loadBytes' Methode den AVM1 Bytecode in Ihren AVM2 Bytecode injiziert, was Probleme verursacht. – gthmb
Vielleicht stimmt das (nur Adobe-Ingenieure wissen das sicher). In jedem Fall scheint es sich um einen Fehler zu handeln. Ich habe das Problem vor langer Zeit gelöst, indem ich AS2 SWF neu gemacht habe (gleiche Funktionalität wurde anders gemacht.), Keine direkte Lösung gefunden. – alxx