ビットマップキャッシュとは?
■ビットマップキャッシュとは?
通常、 Flash 画面上に表示されているものは、毎サイクル「描画の計算」が行われます。
ビットマップキャッシュを使用すると、描画された結果がルメモリ上に退避されるようになります。
次のサイクルで、グラフィックに変化が無く再描画の必要が無い場合、「描画の計算」は行われずキャッシュに退避させたデータを使って描画されます。
よって、ベクターなどのグラフィックであれば、高速に動作するようになります。
では、「再描画の必要が無い」条件とはどのようなケースでしょうか。
■再描画される条件
再描画の必要がある条件は、前回のサイクルから絵が変わったり、回転したり、スケールが変化したり、色が変わったり、ブレンド、フィルタが変化した場合です。
再描画の必要が無い条件は、前回のサイクルから座標しか変化していないときです。
「再描画の必要が無い」条件は移動のみなので限定された場面になりそうですが、もし頻繁に再描画される状態にあるにもかかわらずビットマップキャッシュを使ってしまうとどうなるのでしょうか。
■ビットマップキャッシュの注意点
ビットマップキャッシュを使用している状態で、頻繁に再描画されると
「描画計算」と「描画結果をメモリに退避する」という2つの処理が常に行われるので、
ビットマップキャッシュを使っていない時より、処理が増えてしまいます。さらにメモリも無駄にに消費します。
ベクターグラフィックで絵が頻繁に変わらず、座標しか変化しない場合のみ、ビットマップキャッシュを使用するといいでしょう。それ以外のケースで使用すると、余計に重くなる恐れがあります。
■ビットマップキャッシュが使用できる条件
FlashPlayer9 以前は、幅と高さが 2880 ピクセルまでのグラフィックに適用できます。
FlashPlayer10 以降は、幅と高さが 8192 ピクセルまでのグラフィックに適用できますが、総ピクセル数は 16777216 までとなります。(幅が 8192 なら高さは 2048 まで)
ビットマップキャッシュ化したいグラフィックのサイズが、この範囲を超えてしまうとビットマップキャッシュが動作しません。
FlashPlayer10 以降は、幅と高さが 8192 ピクセルまでのグラフィックに適用できますが、総ピクセル数は 16777216 までとなります。(幅が 8192 なら高さは 2048 まで)
ムービークリップをキャッシュ化する
サンプルをダウンロード
■インスタンスをビットマップキャッシュ化する
ムービークリップをビットマップキャッシュ化するには、 cacheAsBitmap をtrue に変更します。
ブレンドやフィルタを使用している場合は自動的に true になります。
ブレンドやフィルタを使用している場合は自動的に true になります。
ムービークリップ mc をビットマップキャッシュ化する
mc.cacheAsBitmap = true
■抜き部分に色を付ける
さらに、ムービークリップの描画矩形の抜きに当たる透明な部分に色をつければ、アルファブレンディング処理が省かれ、ほんの少し高速に描画する事ができます。
インスタンスの抜きに色を付けるには、ムービークリップのプロパティに opaqueBackground に16進数カラーを指定します。
この矩形を表示することにより描画の面積を可視化して知る事ができます。この面積をいかに減らすかが、描画負荷の軽減を知るポイントになります。
ムービークリップ mc の抜き部分に色(FF0000)を付ける
mc.opaqueBackground = 0xFF0000;

