ActionScriptプロジェクトでのswfの分割

swfのうちすぐには必要にならない機能をメインから分割すると、ファイルサイズが小さくなって読み込みが速くなります。

この場合重要なのが、外部化されたswfがメインのデータにアクセスできること。
もうひとつ、外部swfとメインswfで共有のライブラリは、メインにだけ置いて外部swfにライブラリをマージしないこと。
ついでに、コード補完機能もあたかも外部化してないみたいに効いてくれること。

以上をActionScriptプロジェクトで行う場合です。


まず、メインswfをswc化する。

新たに空のFlexライブラリプロジェクトを作る。そのプロジェクトフォルダにメインswfからsrcフォルダをコピーする。
このとき、リンクしてないasファイルにもコンパイラが走ってエラー警告がたくさん出たりする。
またこの作業をするときは、メインswfプロジェクトは閉じておくのがいい。

以上で、/bin以下に.swcファイルが出現する。
でも、このままではメインswfが得られない。

そこで、新たにActionScriptプロジェクトを作る。
このプロジェクトのプロパティ>ActionScriptビルドパス>ライブラリパスに先ほどのswcを追加する。

そして短いasファイルをひとつだけ書く。

package {
 [SWF(backgroundColor='0x3B6EA5')]
 
 public class gOS_010 extends osCore {
  public function gOS_010() {
   super();
  }
 }
}

extendsに先ほどのswcのルートを指定しているだけ。
このプロジェクトをコンパイルすると、またメインswfが得られるようになる。
メインswfに変更を加えたい場合は、とりあえずFlaxライブラリプロジェクトの方に行う。


続いて、外部swf用のActionScriptプロジェクトを作る。
先ほどと同じく、このプロジェクトのプロパティ>ActionScriptビルドパス>ライブラリパスに先ほどのswcを追加する。
さらにそのswcの設定でリンクタイプを外部にする。この設定で共有ライブラリを重複してマージしてファイルが肥大することは防げる。

以下の記事のconfigファイルの制作は幸いに必要がなかった。
-compiler.external-library-pathで始めるSWF分割術

外部swfを読み込んで、newして使うサンプル。
forked from: ClassLoader