1

swc にパブリッシュされ、フラッシュ プロジェクトで直接使用される一連の大きな fla ファイルがあります。おそらく合計1000以上のオブジェクト。数が増えるにつれて、最終的にコンパイルされた swf が非常に大きくなるため、必要な場合にのみ各オブジェクトの個々の swf をダウンロードしたいと考えています。次に、最終的な AS プロジェクトからクラス名を介してオブジェクトにアクセスして複製できるようにする必要があります。

この問題は、私が見つけた唯一のエクスポート方法は、1) コピーして新しい fla ファイルに貼り付けることです。2) ダブルクリックして「編集」し、強制的に含めるようにします。3) リンケージ (クラス) 名をリセットします。 4) パブリッシュ (つまり、ファイル -> パブリッシュ) して、この swf という名前を付けます。
これらが1000以上ある場合、これにはかなりの時間がかかります。

ライブラリ内の各アイテムを右クリックしてswfとして保存できますが、クラス名などは含まれていないようで、アイテムだけが含まれているようです。これをダウンロードしたら、もう一度ダウンロードしないとクローンを作成して複数回使用することはできません。これは容認できません。

これらの swf を生成するためのより高速で優れた方法はありますか?

(私は xfl を簡単に調べましたが、不明な点がいくつかあることを考えると、手動で行うよりも時間がかかるため、これを行うスクリプトを作成するようです。)

4

1 に答える 1

1

Flash を拡張したり、このタスクを自動化するスクリプトを作成したりできるJSFLを確認する必要があります。

たとえば、ライブラリ内の要素をループ処理し、actionscript 用にエクスポートされたムービークリップに対してのみ swf をエクスポートし、エクスポートが完了したときにクリップボードに配置されるLoaderMaxコードを生成するスクリプトを作成できます。

var doc   = fl.getDocumentDOM();
var dir   = 'file:///' + doc.path.substr(0,(doc.path.lastIndexOf('/')+1));
var lib   = doc.library;
var code  = 'var queue:LoaderMax = new LoaderMax({name:"queue"});\n';
var items = lib.items;
var iNum  = items.length;
var path;
var name;

fl.outputPanel.clear();

for(var i = 0 ; i < iNum ; i++){
    if(items[i].linkageExportForAS){
        name = items[i].linkageClassName;
        path = dir+name+'.swf';
        items[i].exportSWF(path);
        code += 'queue.append( new SWFLoader("'+name+'.swf", {name:"'+name+'"));\n';
    }
}

fl.clipCopyString(code);
fl.outputPanel.trace('symbols exported as swfs, code is in your clipboard');

これを .jsfl ファイルとして保存して実行し、Flash(IDE) のCommandsフォルダーに配置すると、インターフェイスの Commands メニューに表示されます。

これは完璧ではありませんが、何ができるかについてのアイデアを与えてくれます。まず、私が想像するワークフローを確立し、次にそのスクリプトを作成します。

私が理解していないことがいくつかありますが、私はそれを分解しようとしています:

swc にパブリッシュされ、フラッシュ プロジェクトで直接使用される一連の大きな fla ファイルがあります。おそらく合計1000以上のオブジェクト。数が増えるにつれて、最終的にコンパイルされた swf が非常に大きくなるため、必要な場合にのみ各オブジェクトの個々の swf をダウンロードしたいと考えています。

そのため、後でコード化する必要があるアセットを含む fla がいくつかあります。SWC には actionscript 用にエクスポートされた複数の MovieClip が含まれており、さまざまな種類のアセットを含む fla ファイルがさらにあると思います。

次に、最終的な AS プロジェクトからクラス名を介してオブジェクトにアクセスして複製できるようにする必要があります。

getDefinitionを使用して、swf ファイルからクラスをインスタンス化するということですか?

この問題は、私が見つけた唯一のエクスポート方法は、1) コピーして新しい fla ファイルに貼り付けることです。2) ダブルクリックして「編集」し、強制的に含めるようにします。3) リンケージ (クラス) 名をリセットします。 4) パブリッシュ (つまり、ファイル -> パブリッシュ) して、この swf という名前を付けます。

ステップ 1 で、ムービークリップを右クリックして、ExportSWF/ExportSWC (必要に応じて) を選択できませんか? 「強制的に含める」の意味がわかりません。Export for Actionscript にチェックマークを付けるということですか?誰/何がリンケージを消去しますか?

于 2011-01-11T00:57:50.880 に答える