2016-03-05 77 views
1
var file:FileReference=new FileReference(); 

然後AS3嵌入上傳SWF到現場

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類是archieve這一目標的唯一的可能性?

回答

1

Loader類用於加載SWF文件或圖像(JPG,PNG或GIF) 文件。

但是,「加載」真正意思是「解碼格式」用於顯示。因此,請使用Loader.loadbytes將您的file.data字節通過加載程序解碼爲有效的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); 
} 
+0

尼斯。謝謝。有用 ) –