ある種のアプリケーションでは、レイヤーを使用して静的な背景の上部に「ライブ」グラフィック・オブジェクトを描画し、それを操作できます。
このタイプのアプリケーションでは、背景に表示するグラフィック・オブジェクトは静的なもので、ユーザーやアプリケーションが変更することはできません。つまり、グラフィックの背景を構成するすべてのレイヤーが描画できるのは 1 回のみです。これでアプリケーションの描画速度が上がります。
このプロセスをトリプル・バッファリングと呼びます。レイヤーが追加のオフスクリーン・イメージに描画されるためこう呼びます。その後でビューを再描画する必要がある場合は、グラフィック・オブジェクトを再描画する代わりにこのイメージを使用します。
メモ
ダブル・バッファリングとは異なり、トリプル・バッファリングはちらつきの除去ではなく、描画速度を上げるために使用します。ダブル・バッファリングとトリプル・バッファリングは同時に使用できます。
IlvManagerView
のインスタンスの場合は、特定数のレイヤーをトリプル・バッファリングの一部に指定できます。これは、
IlvManagerView
の次のメソッドで行います。void setTripleBufferedLayerCount(int n)
このメソッドを呼び出すと、インデックスが 0 と n-1 (n 番目の背景レイヤー) の間のレイヤーはトリプル・バッファリングされます。
メソッドが 1 回呼び出され、ビューが 1 回ペイントされると、トリプル・バッファー・イメージのみが表示されるため、グラフィック・オブジェクトのその後の変更は画面上にレンダリングされません。
トリプル・バッファーが更新されるのは、次の場合のみです。
- ビューのトランスフォーマーが変更されたとき (ビューをズームまたはパンしているとき)。
- レイヤーを追加または削除したとき。
- トリプル・バッファーされたレイヤー数を変更したとき。
- トリプル・バッファーされたレイヤー数の可視性を変更したとき。
- トリプル・バッファーされたレイヤーから、グラフィック・オブジェクトを追加または削除したとき。
- トリプル・バッファー済みのレイヤーでトリプル・バッファーされたオブジェクトを変更するため、 applyToObject を呼び出した時。メモ形状変更インタラクターなどのインタラクターで、この機能を呼び出します。このため、トリプル・バッファーされたレイヤーのグラフィック・オブジェクトをマウスを使用して形状変更すると、トリプル・バッファーは無効になります。
- トリプル・バッファーされたレイヤーのグラフィック・オブジェクトの可視性を変更したとき。
- グラフィック・オブジェクトが配置されたトリプル・バッファー・レイヤーを変更したとき。
理由のいかんにかかわらず、トリプル・バッファーを更新する必要のあるときは、これらのメソッドが使用できます。
void invalidateTripleBuffer(boolean repaint) void invalidateTripleBuffer(IlvRect rect, boolean repaint)
要約すると、アプリケーションでトリプル・バッファリングを使用するのは、背景レイヤーの内容が静的である場合、およびアプリケーションが頻繁にユーザーに対してズームやパンを要求しない場合です。