2011-05-31 116 views
1

我有2個SWF,其中一個(我們稱之爲Resources.swf),其中包含幾個符號(其中大部分是影片剪輯),但它們都沒有添加到舞臺上時間軸只包含一個空幀), 然後,另一個swf(Main.swf),其中我需要從其他SWF中導入一些符號。AS3從外部swf庫加載符號

我一直在四處尋找和搜索,但所有我看到的,並試圖信息,進口使用的東西從舞臺/時間軸上的符號,如:

loadedMC = MovieClip(loader.content); 

loadedMC = MovieClip(event.target.content); 

我的符號有一個類定義,因爲它們也用於其他swf這種方式:

[Embed(source='assets/Resources.swf', symbol='SymbolName')] 
public class Generic2 extends MovieClip 

有沒有辦法做到這一點?

如果沒有,我是否修改了我的Resources.swf來解決這個問題,或者我有其他方法嗎?

回答

2

加載Resources.swf後,您可以創建加載類的實例。

這裏的一個片段,可以幫助:

var dynClass : Class = Class(getDefinitionByName("fully.qualified.ClassName")); 
if(dynClass) 
{ 
    var app : Object = new dynClass(); 
    addChild(app as DisplayObject); 
} 
+0

做這項工作,如果有與此對象asociated沒有AS3類?如果我的類名只有MyClassName,那將是它的完全限定名? – 2011-05-31 14:17:31

+0

不,我必須在庫對象上有一個類定義(你寫道:'我的符號有一個類定義')。是的,如果您不使用名稱空間,那麼類名稱就足夠了。 – DanielB 2011-05-31 14:19:42

0

你需要有一個AS3類,或者只是象徵出口的框架,否則你不能引用它。如果你不導出你的動畫片段,你的SWF將是空的......基本上,你可以將它導出爲某個類,然後引用空類!

2

按照以下步驟

  1. 在Flash中,通過打開「屬性」庫項目,並選中「爲ActionScript導出」,給它一個「類」的名字你的類用於出口。
  2. 發佈Resources.SWF
  3. 加載Resources.SWF後,你可以用這個輔助函數
  4. 創建實例然後,您可以addChild()或任何你想要的實例。

輔助函數

public function createInstance(mc:MovieClip, className:String, instName:String):MovieClip 
{ 
    var cls:Class = mc.loaderInfo.applicationDomain.getDefinition(className) as Class; 
    if (cls) 
    { 
     var instMC:MovieClip = new cls(); 
     instMC.name = instName; 
     return instMC; 
    } 
    return null; 
}