Flashで吹雪のごとき描画を実現するチューニング3策:速いFlash/ActionScriptチューニング入門(2)(3/4 ページ)
Flash/ActionScriptチューニングの基礎知識から実践的テクニックまでを紹介する連載。読みながら試せるオンライン・サンプルもあります。Adobe AIR/Flexにも応用可能です
【2】Flash Playerに情報を保持「ビットマップキャッシュ」
ベクタ形式を使いつつも、ビットマップの描画速度を実現する。そんな要求を満たしてくれる便利な機能がFlashには備わっています。それは「ビットマップキャッシュ」という機能です。ビットマップキャッシュは、ベクタを描画するためにFlash Playerが内部的に作ったピクセル情報を消さずに残し、以降はそれを用いることで描画を高速化するという機能です。
「ビットマップキャッシュ」を使うには
Flash Pro CS4でこの機能を利用には、ステージに配置されたMovieClipを選択した後、プロパティパネルの[ビットマップとしてキャッシュ]にチェックを入れてください。
CS3の場合は、[ランタイムビットマップキャッシュを使用する]です。
また、この機能をASから動的に設定する場合は、MovieClip継承クラスのインスタンスに対し、以下を記述することで設定可能です。
cacheAsBitmap = true;
「ビットマップキャッシュ」を使うと
では、実際にビットマップキャッシュの有無で描画速度どれほどの差が出るのかを体感してもらいましょう、試しに下の例を実行してみてください。かなりのスコアアップを体感できると思います。
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
このように、ラスタ形式の素材を用意することなく描画を高速化できるため、非常に便利です。
「ビットマップキャッシュ」の弱点
しかし、このように便利なビットマップキャッシュ機能にも、注意しなければならないことがあります。
ビットマップキャッシュを有効にしていたとしても、rotation、scaleX、widthといった、形状そのものが変化するような値を変更してしまうと、その都度キャッシュ処理が実行され直されてしまいます。以下に示すように、効果が得られなくなってしまうのです。
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
また、ビットマップキャッシュは、キャッシュを保持する都合上メモリを食いやすいため、サイズの大きなMovieClipなどに適用する際には注意が必要です。
POINT 「TextFieldには、ビットマップキャッシュが有効」
ビットマップキャッシュは、このような性質からTextFieldとの相性が、非常に良いです。表示文字列やサイズが頻繁に変化しないTextFieldでは、基本的にビットマップキャッシュを有効にしておくことを強くお勧めします。
さて、ビットマップキャッシュを利用するだけでも、かなりの高速化が見込めましたが、弱点が出てきてしまいました。それでは実制作で使う機会が損なわれてしまいます。しかし、それでも高速化したいですよね。そこで、次ページではその弱点を克服する方法として「プリレンダリング」という方法を紹介したいと思います。
Copyright © ITmedia, Inc. All Rights Reserved.