在AIR中使用bytearray加载Swf

Gan*_*nga 4 apache-flex air flash

我们要求AIR应用程序加载flex生成的swf,它使用SWFLoader加载flash生成的swf.这不符合要求.这会给出以下错误:SecurityError:错误#3226:当LoaderContext.allowCodeImport为false时,无法导入SWF文件.

这是我们的AIR应用程序.

<?xml version="1.0" encoding="utf-8"?>
<mx:WindowedApplication xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" creationComplete="initApp()">
<mx:Script>
<![CDATA[

import mx.controls.SWFLoader;

[Embed(source="FlexLoadingFlash.swf")]
public var flexMovie:Class;

private function initApp():void {
    // First convert the Swf into MovieClip
    var movieclip:MovieClip = new flexMovie();

    // get the byteArray from movieClip
    var byteArray:ByteArray = movieclip.movieClipData; 

    var swfLoader:SWFLoader = new SWFLoader();

    // load bytearray into swfLoader
    swfLoader.source = byteArray;

    swfLoader.maintainAspectRatio = false; 
    swfLoader.percentHeight = vbox.height;
    swfLoader.percentWidth = vbox.width;
    swfLoader.invalidateDisplayList();
    swfLoader.invalidateSize();

    // now add the swfloader into container
    vbox.addChild(swfLoader); 
} 

]]>

</mx:Script>

<mx:VBox id="vbox" width="100%" height="100%" verticalCenter="0" horizontalCenter="0" cacheAsBitmap="true" >

</mx:VBox>

</mx:WindowedApplication>
Run Code Online (Sandbox Code Playgroud)

请告诉我们如何解决此问题.

Flo*_*n F 7

使用Loader.loadBytes()加载SWF.创建LoaderContext的实例.loadBytes方法将LoaderContext实例作为参数.将LoaderContext实例的allowCodeImport属性设置为true,它应该可以工作