簡體   English   中英

AS3 從外部 swf 庫加載符號

[英]AS3 load symbol from external swf library

我有 2 個 SWF,其中一個(我們稱之為Resources.swf ),在其庫中包含多個符號(大多數是 MovieClips),但是,它們都沒有添加到舞台中(時間軸只包含一個空幀) ,然后是另一個 swf ( Main.swf ),我需要從另一個 SWF 導入一些符號。

我一直在環顧四周,搜索,但我看到並嘗試過的所有信息都使用以下內容從舞台/時間軸導入符號:

loadedMC = MovieClip(loader.content);

或者

loadedMC = MovieClip(event.target.content);

我的符號有一個 class 定義,因為它們也以這種方式在其他 swf 中使用:

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

有沒有辦法做到這一點?

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

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

這里有一個片段可能會有所幫助:

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

按着這些次序

  1. 在 flash 中,將 class 標記為導出,方法是調出庫項目的“屬性”並選中“導出為 ActionScript”並為其指定“類”名稱。
  2. 發布資源.SWF
  3. 加載 Resources.SWF 后,您可以使用此幫助程序 function 創建實例
  4. 然后,您可以 addChild() 或任何您想要的實例。

幫手 Function

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;
}

您需要有一個 as3 class,或者只是導出框架中的符號,否則您無法引用它。 如果您不導出影片剪輯,您的 swf 將為空...基本上您可以將其導出為某個 class 然后引用空類!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM