0

私はムクドリに不慣れで、これは初心者の質問のように聞こえるかもしれませんが、ここでは何も起こりません。

次のシナリオ(Flashの場合)を想像してみてください。

  • テストという名前のムービークリップ
  • テストには80フレームがあります
  • テストには、それぞれ20フレームに4つのラベルがあります

プロジェクトでスクリプトテストを行うとき。ラベル0-1(フレーム1-19)からループさせます。次に、特定のイベントでラベル2をループするように指示します。

このように、ムービークリップを追加または削除したり、1つだけインスタンス化したりすることはありません。

さて、スターリングで実装することを考えれば。フラッシュで4つのムービークリップを作成することを考えています。それらをスプライトシートとしてエクスポートしてから、スクリプトで4つのムービークリップを作成します。ジャグラーでプレイする必要のあるモビクリップを追加し、同様にその時点で子を削除します。

このようにして、これらのアニメーションを切り替えるたびに、「addchild」と「removechild」のオーバーヘッドコストを追加しています。それはより費用効果の高い方法ですか?

4

1 に答える 1

0

単一のクリップをエクスポートしたいと思いますが、単一のクリップではなく、複数のアニメーション(4つのアニメーション)を制御します。この場合、数年前(CS6がスプライトシートをエクスポートしていなかったとき)にいくつかのJSFLスクリプトを作成しました。これは、.flaドキュメントのメインタイムラインを画像シーケンスとしてエクスポートしましたが、ファイル名。これにより、TexturePackerとの統合が容易になりました。あなたはそれのビデオをここで見ることができます。

これは、TexturePackerでの管理を容易にするフレームラベルに基づいて生成された名前を持つフレームシーケンスをエクスポートするJSFLスニペットです。

var d   = (FLfile.getPlatform() == 'macos') ? '/' : '\\'; //delimiter
var doc = fl.getDocumentDOM();                            //document
var tl  = doc.getTimeline();tl.setSelectedLayers(0,true); //timeline
var cl = tl.layers[0];                                    //current layer
var numFrames = cl.frameCount;

var className = prompt("Name for your sequence", toClassName(doc.name.substr(0,doc.name.length-4)));
className = className.split('.')[0];//just in case the user adds .as
className = toClassName(className);//remove non alphabet chars
var docPath = doc.pathURI.substr(0,doc.pathURI.length - doc.name.length);
var exportPath = docPath+className+'_export'+d;
if(!FLfile.exists(exportPath)) FLfile.createFolder(exportPath);
fl.outputPanel.clear();
for(i = 0 ; i < numFrames; i++) {
    if(cl.frames[i].name != ''){//if frame is labelled
        tl.setSelectedFrames(i,i,true);
        doc.exportPNG(exportPath+cl.frames[i].name+lpad(''+i,4)+'.png',true,true);
    }
}
fl.trace("export complete!");
function lpad(number, length){
    var result = '' + number;
    while (result.length < length) result = '0' + result;
    return result;
}
function toClassName(input){
    return input.replace(/[^a-zA-Z]/g, "");
}

また、Dynamic-Texture-Atlas-GeneratorFruitflyなどのジェネレーターツールを確認することをお勧めします。

于 2013-02-15T15:51:33.673 に答える