6

Flash CS4 を使用して、十数個のサウンドといくつかの音楽トラックを含むゲームを作成しています。パブリッシュ/コンパイル時間を短縮するために、プロジェクトの「ライブラリ パス」にある (外部) SWC にサウンドと音楽を移動しました。これは機能しますが、注意が必要です...

アセットを外部化する前までは、埋め込まれたサウンドのオブジェクトを でクラスを取得して動的にインスタンス化していました。SoundgetDefinitionByName

// something like...
var soundSubClass:Class = Class(getDefinitionByName(soundClassName));
var mySound:Sound = new soundSubClass();

しかし、それらが外部 SWC に配置されたので、このようにクラスをロードするには、クラスへの「具体的な」参照が必要です。そうしないと、公開された SWF に含まれず、実行getDefinitionByNameしようとすると実行時エラーが発生します。存在しないクラスを取得します。

私の質問: Flash Professional CS4 では、静的にリンクされているかどうかに関係なく、ライブラリのアセットを強制的に含める方法はありますか?

FlashDevelop にはコンパイラ オプション「SWC インクルード ライブラリ」があります。これはまさに私が必要としているものであり、「SWC ライブラリ」オプションとは異なります。「SWC インクルード ライブラリ」オプションの説明は、「使用されているかどうかに関係なく、SWC ファイル内のすべてのクラスを結果のアプリケーション SWF ファイルにリンクします」です。

(また、すべてのアセットが 1 つのコンパイル済み SWF 内に含まれていることも重要です。実行時のリンクは、私が求めているものではありません。)

4

5 に答える 5

4

残念ながら、私はそうは思いません。これがCS5で修正されることを願っていますが、私はそれに賭けません...

現在の (悪化している) 標準は、ライブラリの残りの部分にあるすべてのルート クラスを参照するマニフェスト クラスを SWC に持つことです。

public class MyLibManifest {
    public static function manifest():void {
         var class1:Class = Class1;
         var class2:Class = Class2;
         // etc...
    }
}

次に、メインの .fla のどこかに...

import com.mylibrary.MyLibManifest;

...

var myLibrary:Class = MyLibManifest;
于 2010-06-09T19:52:36.433 に答える
1

おそらく何かが欠けていますが、コンパイラの library-path オプションではなく -include-libraries を使用する場合ではありません。これは、Adobe doc がオプションについて述べていることです

使用されているかどうかに関係なく、SWC ファイル内のすべてのクラスを結果のアプリケーション SWF ファイルにリンクします。

このオプションを、コンパイル時に参照されるクラスのみを含む library-path オプションと比較してください。

アドビのドキュメント

私はこれらすべてに慣れていないので、炎の中で私を撃ち落とすときは優しくしてください:)

于 2014-06-21T05:30:15.910 に答える
0

アセットのパスをActionScriptプロパティで指定できます。パスは機能し、実行時にアセットをロードする必要があります。

于 2010-06-08T06:53:20.623 に答える
0

-include YourClass を使用すると、メインの swf から参照されていない場合でも、swc からクラスを強制的にリンクできます。

しかし、フラッシュcs4からコンパイラオプションを変更できるかどうかはわかりません...

于 2013-07-17T12:16:33.403 に答える