表示オブジェクトのキャッシュFlash Player 9 以降、Adobe AIR 1.0 以降 Flash 内のデザインのサイズが大きくなると、アプリケーションの作成や、複雑なスクリプトで記述されたアニメーションの作成を行っている場合、パフォーマンスと最適化について考慮する必要があります。 静的な状態のままのコンテンツ(矩形の Shape インスタンスなど)がある場合、Flash Player および AIR によるコンテンツの最適化は行われません。したがって、矩形の位置を変更すると、Flash Player および AIR によって Shape インスタンス全体が再度描画されます。 指定した表示オブジェクトをキャッシュすることにより、SWF ファイルのパフォーマンスを向上させることができます。 表示オブジェクトはサーフェスであり、基本的にはインスタンスのベクターデータのビットマップバージョンです。このデータは、SWF ファイルの処理で大きく変更されることはありません。したがって、キャッシュがオンになっているインスタンスでは、SWF ファイルの再生中に連続的に再描画されることがないので、SWF ファイルのレンダリングが高速になります。 注意: サーフェスが再作成されるときに、ベクターデータを更新できます。 このため、サーフェス内にキャッシュされたベクターデータは、SWF ファイル全体で同じである必要はありません。
表示オブジェクトの cacheAsBitmap プロパティを true に設定すると、表示オブジェクト自体のビットマップ表現がキャッシュされます。Flash Player および AIR は、インスタンスのサーフェスオブジェクトを作成します。これは、ベクターデータではなくキャッシュされたビットマップです。表示オブジェクトの境界を変更すると、サーフェスはサイズ変更されるのではなく、再作成されます。 サーフェスは、他のサーフェス内にネストできます。 子サーフェスは、親サーフェス上にビットマップをコピーします。 詳しくは、ビットマップキャッシュの有効化を参照してください。 DisplayObject クラスの opaqueBackground プロパティと scrollRect プロパティは、cacheAsBitmap プロパティを使用してビットマップキャッシュに関連付けられています。この 3 つのプロパティは互いに独立していますが、opaqueBackground プロパティと scrollRect プロパティは、オブジェクトがビットマップとしてキャッシュされるときに最適に動作します。また、opaqueBackground プロパティと scrollRect プロパティによってパフォーマンスが向上するのは、cacheAsBitmap が true に設定されている場合のみです。表示オブジェクトのコンテンツのスクロールについて詳しくは、表示オブジェクトのパンとスクロールを参照してください。不透明な背景の設定について詳しくは、不透明な背景色の設定を参照してください。 cacheAsBitmap プロパティを true に設定する必要があるアルファチャンネルマスクについて詳しくは、表示オブジェクトのマスクを参照してください。 キャッシュを有効にするシナリオ表示オブジェクトのキャッシュを有効にすると、サーフェスが作成されます。これには、複雑なベクターアニメーションのレンダリングが速くなるなどいくつかの利点があります。 キャッシュを有効にしたいシナリオとして、いくつかの場合が考えられます。 常にキャッシュを有効にして SWF ファイルのパフォーマンスを向上させたい場合が考えられます。しかし、キャッシュを有効にしてもパフォーマンスが向上しない場合や、パフォーマンスが低下する場合もあります。 このセクションでは、キャッシュを使用する必要があるシナリオと、通常の表示オブジェクトを使用する必要があるシナリオについて説明します。 キャッシュされたデータの全体的なパフォーマンスは、インスタンスのベクターデータの複雑さ、変更するデータの量、および opaqueBackground プロパティを設定するかどうかによって異なります。小さな領域を変更する場合、サーフェスを使用したときとベクターデータを使用したときの違いは、ごくわずかです。 アプリケーションをデプロイする前に、両方のシナリオをテストする必要があります。 ビットマップキャッシュを使用するシナリオビットマップキャッシュを有効にすることで大きな利点が得られる代表的なシナリオを次に示します。
これらのシナリオでビットマップキャッシュを有効にすると、ベクターグラフィックの最適化により、アプリケーションの応答性とインタラクティブ性が向上します。 また、表示オブジェクトに対してフィルターを適用するたびに、cacheAsBitmap が(明示的に false に設定されている場合でも)Flash Player によって自動的に true に設定されます。表示オブジェクトのすべてのフィルターをクリアすると、cacheAsBitmap は最後に設定した値に戻ります。 ビットマップキャッシュの使用を避けるべきシナリオこの機能を使用する状況を誤ると、SWF ファイルのパフォーマンスに悪影響を及ぼす可能性があります。ビットマップキャッシュを使用する場合は、次のガイドラインを覚えておく必要があります。
ビットマップキャッシュの有効化表示オブジェクトのビットマップキャッシュを有効にするには、cacheAsBitmap プロパティを true に設定します。 mySprite.cacheAsBitmap = true; cacheAsBitmap プロパティを true に設定すると、表示オブジェクトのピクセルが全体の座標に自動的に吸着します。SWF ファイルをテストすると、複雑なベクターイメージで実行されるアニメーションのレンダリングが大幅に速くなっていることがわかります。 cacheAsBitmap を true に設定しても、次のうち 1 つまたは複数の条件に当てはまる場合、サーフェス(キャッシュされたビットマップ)は作成されません。
キャッシュされたビットマップの変換マトリックスモバイルデバイス用の AIR アプリケーションでは、cacheAsBitmap プロパティを設定する場合には必ず cacheAsBitmapMatrix プロパティを設定してください。このプロパティを設定すると、再レンダリングを実行せずに表示オブジェクトに広範囲の変形を適用できます。 mySprite.cacheAsBitmap = true; mySprite.cacheAsBitmapMatrix = new Matrix(); このマトリックスプロパティを設定すると、オブジェクトを再キャッシュせずに、表示オブジェクトに次のような追加の変形を適用できます。
これらの変形は、キャッシュされたビットマップに直接適用されます。 |
![]() |