« 色を操作する 2 - ColorMatrixFilter | Main | 有機的に動く光 - blendMode »

キャッシュを有効にしてアニメーションを高速にする - cacheAsBitmap

Flashやillustratorで描いたベクターデータは拡大しても表示が乱れず、データのサイズも増えないというメリットがある一方、複雑なベクターコンテンツを含むムービークリップを動かそうとした場合、毎フレーム描画に計算を要するために、どうしてもスムーズに動かない問題がありました。

これまではこの問題を解決するために、一時的に_quality プロパティの値を"LOW"に変更したり、ベクター画像をビットマップに書き出して置き換えたりしていたわけですが、Flash8からはcacheAsBitmapプロパティをtrueに設定することで、ベクターで描かれたオブジェクトがビットマップとしてメモリにキャッシュされ、複雑なベクターデータも高速に動かすことが可能になりました。

上の例では複雑なベクターで描かれたムービークリップを同時に20個移動させています。「cacheAsBitmap」にチェックを入れると、それぞれの環境によって差はありますが、キャラクターが高速で動き出すと思います。右下のフレームレートの数値も格段に上昇し、ムービーの描画処理速度が向上していることがわかります。

function switchCache():Void {
    var mc:MovieClip;
    for (var i:Number = 0; i < 20; i++) {
        mc = this["mc"+i];
        mc.cacheAsBitmap = !mc.cacheAsBitmap;
    }
}

cachebtn.onRelease = function():Void {
    switchCache();
}

注意したいのは、拡大や回転するオブジェクトにcacheAsBitmapを適用すると、かえって動きが遅くなる可能性があるということです。有用なのは、静的な背景や移動だけの「変形しない」オブジェクトに限られます。詳しくは キャッシュを有効にする状況 (Flash 8 LiveDocs)を参考にするとよいでしょう。

ビットマップキャッシュは、ムービークリップやボタンのプロパティパネルの[ランタイムビットマップを有効にする]の欄にチェックを入れることでも有効にできます。また、ムービークリップにBevelFilterやColorMatrixFilterなどのBitmapFilterを適用することで、cacheAsBitmapは自動的にtrueに設定されます。

TrackBack

このエントリーのトラックバックURL:
http://casualplay.net/cgi-bin/mt/mt-tb.cgi/5

Post a Comment