これは、私が以前に尋ねたが、回答を受け取っていない質問の新しいバージョンです。
私は多くのアニメーションを備えたモバイル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でビットマップのビットマップデータを配列から切り替えます。これにより、非常に高いパフォーマンスが得られます