2012-09-18 48 views
1

通常我們使用'Loader'類將外部swf文件加載到Flash中。從Flash中的嵌入文件加載SWF

var loader:Loader = new Loader(); 
loader.load(new URLRequest("http://domain/path/my-external-swf.swf")); 

然而,外部swf文件現在已嵌入我的Flash文檔中:

[Embed("my-external-swf.swf")] 
public var component:Class; 

是否有可能告訴「裝載機」從嵌入的內容加載呢?

回答

1

你應該能夠簡單地做到這一點:

addChild(new component()); 

希望名字component不會發生衝突任何保留的變量。

如果您仍希望使用Loader類,如@Lukasz建議的那樣,請使用loadBytes()方法並傳遞嵌入資源。如果您的SWF還包含代碼,您可能需要初始化LoaderContext

var ctx:LoaderContext = new LoaderContext(false,this.loaderInfo.applicationDomain); 
ctx.allowCodeImport = true; 
Loader(addChild(new Loader())).loadBytes(new Components(),ctx); 
+0

我嘗試使用「的addChild(新組件());」但它會導致一堆錯誤。如果我編譯的Flex應用程序使用RSL,閃存無法加載依賴關係,我不知道爲什麼。 – jondinham

+1

我不確定所有可能的錯誤是什麼,但我可以考慮至少有一個實例用於共同的空對象引用:舞臺。如果您的swf在初始化時試圖訪問該階段,那麼編譯swf本身時代碼可能會正常工作,但是當您加載它並創建新實例時,它尚未添加到顯示列表中,所以階段將爲null,直到發生這種情況,在這種情況下,我建議使用Event.ADDED_TO_STAGE的事件處理程序來初始化載入的swf中的階段相關代碼。 HTH –

2

我認爲你應該使用Loader類的loadBytes,類似描述這裏的解決方案:how to embed swf file

相關問題