リンケージで外部 swf からクラスを呼び出し

必要に迫られて、方法を調べてみました。
以下、 ActionScript3/Flash CS3 で検証しています。

Step1. ActionScript でクラスを定義する

まず、呼び出し元のクラスを作成します。
ここでは、以下のような MyTree クラスを MyTree.as 内で定義しました。

package
{
  import flash.display.MovieClip; 

  public class MyTree extends MovieClip {
    public function MyTree() {
      trace("success!");
    }
  }
}

読み込みの成否だけを気にしているので、最低限の実装です。衝突を防ぐため、パッケージに名前を与えてもいいと思います。
また、次のステップでシンボルとリンクさせる都合、 MovieClip クラスを継承しています。

Step2. リンケージを作る

適当なプロジェクトを作成します。ここでは、 test.fla を作成しました。
作成したファイルに矩形ツールなどで絵を描いて、シンボルに変換します。図形の上で右クリックして、『シンボルに変換』です。ここでは、名称は適当で構いません。
これが終わったら、ツールバーの『ウインドウ』から『ライブラリ』を開きます。先ほど作ったシンボルが登録されているはずなので、リストから探して右クリックし、『リンケージ』を選択します。『ActionScript に書き出し』にチェックを入れ、クラス名に先ほど作った MyTree を、基本クラスに MovieClip を、それぞれ選択します。
ここまで完了したら、 .fla ファイルを .swf に書き出しておきます。

Step3. 別のプロジェクトから swf のクラスをロードする

test2.fla というプロジェクトを新規に作成し、『アクション』ウインドウを開きます。以下のコードを打ち込んで書き出しを行うと、確かに先ほど作ったシンボルが表示され、コンソールへの "success!" の出力も行われるはずです。

var MyTree:Class;
var treeLoader:Loader = new Loader();
var treeRequest:URLRequest = new URLRequest("test.swf");
treeLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, drawTree);
treeLoader.load(treeRequest);

function drawTree(event:Event):void {
  MyTree = treeLoader.contentLoaderInfo.applicationDomain.getDefinition("MyTree") as Class;
  var mc:MovieClip = new MyTree();
  addChild(mc);
}