1

これは、私が以前に尋ねたが、回答を受け取っていない質問の新しいバージョンです。

私は多くのアニメーションを備えたモバイルAIRアプリを開発しており、テストでは、ビットマップとGPUレンダリングを使用すると、すべてのモバイルモデルで最高のパフォーマンスが得られることが示されています。アプリのアーティストから通常のベクターアニメーションを受け取り、実行時にこれらのアニメーションをループしてコンテンツをビットマップデータに描画するシステムを構築しました。

私の懸念は、ムービークリップのフレームをループすることです。これらのコード行がある場合:

for (var i:uint=1; i<mc.totalFrames+1; i++) {
  mc.gotoAndStop(i);
  bitmapData.draw(mc);
}

フレームが描画される前に「構築」されたかどうかはわかりません。Androidタブレットでのテストでは、これが正しいことが証明されています。フレームが描画されない場合があります。

このmcは明らかにディスプレイリストから外れています(画面にレンダリングする必要はありません)。では、フレームをビットマップデータに描画する前に、フレームが作成されていることを確認する方法はありますか?(そしてFRAME_CONSTRUCTED、EXIT_FRAMEなどを待つのは明らかに遅くて不要です)

何か案は?ありがとうサール

明確にするための詳細情報:

これは子供向けの本です。各ページにはアニメーションが含まれています。これらのアニメーションはすべて、開発アーティスト(ユーザーではない)から受け取ったFLAのタイムラインのベクターアニメーションです。すべてのページには、swfに公開するFLAがあります。

私が実際に行っているのは、ロードされたSWFのベクターアニメーションをビットマップバージョンに置き換えることです。アプリの実行時に、新しいページごとにswfをロードし、その中のすべてのアニメーションを調べ(コンテンツの子をループします)、各ムービークリップをラスタライズしてビットマップデータの配列にします。私のカスタム「ビットマップムービークリップ」は、各ムービークリップの置換ビットマップをディスプレイリストに配置し、ENTER_FRAMEでビットマップのビットマップデータを配列から切り替えます。これにより、非常に高いパフォーマンスが得られます

4

2 に答える 2

0

スプラッシュ スクリーンを使用し、ビットマップに変換する MC を最初にステージに配置してから、bitmapData に描画することをお勧めします。いくつかの問題により、描画中の DisplayObject を実際の描画の前にステージに配置する必要がありました。

var splashBD:BitmapData=new BitmapData(stage.stageWidth,stage.stageHeight,false,0xffffff);
var splashBM:Bitmap=new Bitmap(splashBD); // draw a thing as needed here
addChild(splashBM);
addChildAt(MC_to_convert,getChildIndex(splashBM)); 
// then advance it by frames and draw.
于 2013-03-21T09:07:39.287 に答える
0

ごめんなさいMY BAD

FRAME_CONSTRUCTED を待つことが答えです

于 2013-03-21T09:20:32.143 に答える