2011-10-26 5 views
2

Je travaille avec l'application AIR qui charge le fichier SWF chiffré à partir du disque dur et décrypte ce swf. Après cela, j'ai byteArray de swf décrypté et je veux le charger dans Loader ou SWFLoader.Comment charger le fichier SWF depuis byteArray?

private var file_byte:ByteArray; 
private var myFileStream:FileStream; 
private static var inputFile:File; 
private var loader:Loader; 

private function loadSWF(url:String):void 
{ 
    inputFile = new File(url); 
    myFileStream = new FileStream(); 
    myFileStream.addEventListener(Event.COMPLETE, completed); 
    myFileStream.openAsync(inputFile, FileMode.READ); 
    file_byte = new ByteArray(); 
} 

private function completed(event:Event):void 
{ 
    myFileStream.readBytes(file_byte, 0, myFileStream.bytesAvailable); 

    //Decrypting file 
    file_byte = decrypt(file_byte); 

    // Prepare the loader context to avoid security error 
    var loaderContext:LoaderContext = new LoaderContext(); 
    loaderContext.allowLoadBytesCodeExecution = true; 
    loaderContext.allowCodeImport = true; 

    // Load the SWF file  
    loader = new Loader(); 
    loader.contentLoaderInfo.addEventListener(Event.COMPLETE, onChildComplete); 
    loader.loadBytes(file_byte,loaderContext); 
} 

private function onChildComplete(e : Event) : void 
{ 
    this.addChild(loader); 
} 

Erreur de sécurité:

Error #3207: Application-sandbox content cannot access this feature. 
at flash.system::Security$/allowDomain() 
at rfx::MainTimeline_cbc00d6d7b3a063d505c336e0c8f32a1()[constructor.as:0] 

byteArray est correct, je l'ai écrit dans le fichier dans le disque et il a travaillé dans le puits Flash Player. J'ai lu beaucoup de bac à sable, allowLoadBytesCodeExecution, fichiers SWF externes dans AIR, mais je ne peux pas résoudre ce problème!

Comment charger le fichier swf de byteArray?

Répondre

2

Je suis peut-être un peu en retard, mais je suis tombé par hasard en cherchant mon propre problème. Essayez plutôt de remplacer votre appel de constructeur par ceci.

var loaderContext:LoaderContext = new LoaderContext(false, ApplicationDomain.currentDomain); 
Questions connexes