Flashで吹雪のごとき描画を実現するチューニング3策速いFlash/ActionScriptチューニング入門(2)(3/4 ページ)

» 2010年04月19日 00時00分 公開
[河北啓史チームラボ株式会社]

【2】Flash Playerに情報を保持「ビットマップキャッシュ」

 ベクタ形式を使いつつも、ビットマップの描画速度を実現する。そんな要求を満たしてくれる便利な機能がFlashには備わっています。それは「ビットマップキャッシュ」という機能です。ビットマップキャッシュは、ベクタを描画するためにFlash Playerが内部的に作ったピクセル情報を消さずに残し、以降はそれを用いることで描画を高速化するという機能です。

「ビットマップキャッシュ」を使うには

 Flash Pro CS4でこの機能を利用には、ステージに配置されたMovieClipを選択した後、プロパティパネルの[ビットマップとしてキャッシュ]にチェックを入れてください。

 CS3の場合は、[ランタイムビットマップキャッシュを使用する]です。

 また、この機能をASから動的に設定する場合は、MovieClip継承クラスのインスタンスに対し、以下を記述することで設定可能です。

cacheAsBitmap = true;

「ビットマップキャッシュ」を使うと

 では、実際にビットマップキャッシュの有無で描画速度どれほどの差が出るのかを体感してもらいましょう、試しに下の例を実行してみてください。かなりのスコアアップを体感できると思います。

ビットマップキャッシュにより高速化された例

 このように、ラスタ形式の素材を用意することなく描画を高速化できるため、非常に便利です。

「ビットマップキャッシュ」の弱点

 しかし、このように便利なビットマップキャッシュ機能にも、注意しなければならないことがあります。

 ビットマップキャッシュを有効にしていたとしても、rotation、scaleX、widthといった、形状そのものが変化するような値を変更してしまうと、その都度キャッシュ処理が実行され直されてしまいます。以下に示すように、効果が得られなくなってしまうのです。

rotationの変更により、毎フレームの形状が変化するために効果が出ていない例

 また、ビットマップキャッシュは、キャッシュを保持する都合上メモリを食いやすいため、サイズの大きなMovieClipなどに適用する際には注意が必要です。

POINT 「TextFieldには、ビットマップキャッシュが有効」

ビットマップキャッシュは、このような性質からTextFieldとの相性が、非常に良いです。表示文字列やサイズが頻繁に変化しないTextFieldでは、基本的にビットマップキャッシュを有効にしておくことを強くお勧めします。


 さて、ビットマップキャッシュを利用するだけでも、かなりの高速化が見込めましたが、弱点が出てきてしまいました。それでは実制作で使う機会が損なわれてしまいます。しかし、それでも高速化したいですよね。そこで、次ページではその弱点を克服する方法として「プリレンダリング」という方法を紹介したいと思います。

Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。