as3将上传的swf嵌入到场景中

时间:2016-03-05 16:46:03

标签: actionscript-3 movieclip

 var file:FileReference=new FileReference();

然后

trace (file.data);

工作正常

之后我试图将收到的数据嵌入到场景中但没有成功

var ExtSWF:MovieClip;
ExtSWF = file.data.readObject() as MovieClip;
trace(ExtSWF);

返回null

但如果我将其作为远程文件加载Loader - 它可以正常工作

var ldr:Loader = new Loader();
ldr.load(new URLRequest("ext.swf"));
......
ExtSWF = MovieClip(ldr.contentLoaderInfo.content);

是否可以只上传swf文件并将其嵌入到场景中,或者Loader类是唯一可能实现此目标的方法?

1 个答案:

答案 0 :(得分:1)

  

Loader类用于加载SWF文件或图像(JPG,PNG或GIF)   文件。

但是"加载"真正含义" 解码格式"用于显示。因此,使用file.dataLoader.loadbytes字节传递给Loader,以便解码为有效的MovieClip对象。

尝试

//var ExtSWF : MovieClip = new MovieClip;
//ExtSWF = file.data.readObject() as MovieClip;
var ldr : Loader = new Loader(); //# declare outside of any functions (make as public var)
ldr.loadBytes(file.data); //#use Loader to auto-decode bytes of SWF
ldr.contentLoaderInfo.addEventListener(Event.COMPLETE, on_swfLoaded );

还有解码完成的处理函数......

function on_swfLoaded (evt:Event) : void
{
    var ExtSWF : MovieClip = new MovieClip;
    ldr.contentLoaderInfo.removeEventListener(Event.COMPLETE, on_swfLoaded );
    ExtSWF = ldr.content as MovieClip;

    trace(ExtSWF);
    ExtSWF.x =50; ExtSWF.y = 50; addChild(ExtSWF);
}