0

FB4でAS3プロジェクトを作っています。私たちのワークフローでは、アーティストにアートをSWCファイルにコンパイルしてもらい、それをFB4の「参照ライブラリ」としてリンクします。

次に、SWCファイルの「リンクタイプ」をコードにマージするのではなく「外部」に設定しました。これにより、出力フォルダー内のSWCファイルに対応するSWFが作成されます。

これは当てはまらないようです。main_appの1つのSWFファイルしか表示されていません。

ライブラリマネージャーを使用してファイルを動的にロードできるようにしようとしていました。

swfsを手動で抽出しようとしましたが、main_appはまだすべてのswcsをそれ自体にコンパイルしているようです。リンクタイプが外部に設定されていることを確認しました。「external」と「mergedtocode」の間のmain_appのファイルサイズは同じようです。

4

2 に答える 2

1

Flash Builder 4 で簡単なプロジェクトを作成しましたが、SWC->SWF を発生させる唯一の方法は、ActionScript プロジェクトの代わりに Flex プロジェクトを作成し、「外部」ではなく「ランタイム共有ライブラリ (RSL)」を選択することです。これは、Flex フレームワークには、これらのライブラリのロードを処理するいくつかのクラスがあるためです。また、変換 (抽出と言うべきです) プロセスも自動化します。

このためだけに Flex プロジェクトを作成したくない場合は、自分で SWF を抽出できます。SWC ファイル形式は、SWF とコンテンツを記述した XML ファイルを含む単なる Zip です。次に、ローダーを使用し、正しいアプリケーション ドメインを設定して、この抽出された SWF ファイルを動的にロードできます。これが私のサンプルプロジェクトのスニペットです。

public class Web extends Sprite
{
    public function Web()
    {
        //you will not be able to instantiate classes of your library until it's loaded
        var loader:Loader = new Loader();
        loader.contentLoaderInfo.addEventListener(Event.COMPLETE, onLoadComplete);
        loader.load(new URLRequest("library.swf"), new LoaderContext(false, ApplicationDomain.currentDomain));
    }

    protected function onLoadComplete(event:Event):void
    {
        //here you can create instances of classes defined in your library
        new Asset();
    }

}

デザイナーがライブラリを更新するたびに解凍してコピーするのは、かなり面倒な作業だと思うかもしれません。このプロセスは、スクリプトまたは Ant ファイルを使用して自動化できます。残念ながら、私が何かを見逃していない限り、Flash Builder はビルド プロセスを拡張することを望んでいないようです。そのため、ビルドするには少し手作業を行うか、完全に Ant (または類似のもの) に変換する必要があります。

幸運を!

于 2010-11-14T05:31:33.953 に答える
0

SWC がライブラリに追加された瞬間から、特定のクラス名を直接呼び出して SWC のアセットにアクセスできるようになります。SWF を取得して Loader クラスでロードする必要はありません。これは、そもそも SWC を使用する目的を実際に無効にします。

SWC に、GraphicAsset というクラス名の MovieClip があり、新しいインスタンスを作成するとします。これを行うだけです。

  var mc:MovieClip = new GraphicAsset();

FB4 のフォルダー構造で、Referenced Libraries フォルダー内の SWC を見て、デフォルトのパッケージを確認すると、すべてのアセットのリストが表示されます。

于 2010-11-14T11:36:54.613 に答える