グラフィック・オブジェクトのバウンディング・ボックスの変更につながる操作を行う場合は、かならず
IlvManager
クラスの applyToObject メソッドを使用する必要があります。このメソッドは、バウンディング・ボックスの変更をマネージャーに通知するので、IlvGraphic
の moveObject
および reshapeObject
メソッドを直接呼び出すことはありません。void moveObject(IlvGraphic obj, float x, float y, boolean redraw)
void reshapeObject(IlvGraphic obj, IlvRect newrect, boolean redraw)
これらの基本操作に対しては、マネージャーには
applyToObject
を呼び出すメソッドがあります。例: オブジェクトの移動
次のコードは、マネージャーから
test
という名前のオブジェクトへの参照を取得します。オブジェクトが存在する場合は、ポイント (10、20) へ移動し、再描画します (true
に設定した 4 番目のパラメーター)。IlvGraphic object = manager.getObject("test"); if (object != null) manager.moveObject(object, 10, 20, true);
moveObject
メソッドは、以下のコードと同等です。manager.applyToObject(object, new IlvApplyObject() { public void apply(IlvGraphic obj, Object arg){ IlvPoint p = (IlvPoint) arg; obj.move(p.x, p.y); } }, new IlvPoint(10,20), true);
このコードは、
object
をパラメーターとして持つ applyToObject
メソッドを呼び出すとともに、 IlvApplyObject インターフェースを実装する匿名のクラスを呼び出します。arg
パラメーターは、オブジェクトの新規場所を指定する IlvPoint
オブジェクトです。メソッド
applyToObject
は、 IlvGraphicBag インターフェースで定義されているので、以下を使用してグラフィック・オブジェクトから直接 applyToObject
を呼び出すことができます。obj.getGraphicBag().applyToObject(obj, ...);
複数グラフィック・オブジェクトの変更
複数のグラフィック・オブジェクトに操作を繰り返して適用するには、次を呼び出します。
void applyToObjects(IlvGraphicVector vector, IlvApplyObject f, Object arg, boolean redraw)
これは、
IlvApplyObject f
によって指定された操作を、入力ベクトルに含まれるそれぞれのグラフィック・オブジェクトに適用します。複数のグラフィック・オブジェクトのバウンディング・ボックスに影響を与える複雑な操作を、複数のオブジェクトに対して 1 回のみ適用するには、次を呼び出します。
void applyToObjects(IlvGraphicVector vector, IlvApplyObjects f, Object arg, boolean redraw)
これは、
IlvApplyObjects f
で指定された操作を 1 回だけ適用します。複数のオブジェクトのバウンディング・ボックスに影響を与える複雑な操作に有効です。メモ
applyToObjects
メソッドはオーバーロードされます。最初の例では、パラメーターとして IlvApplyObject
オブジェクトを取ります。2 番目の例では、パラメーターとして IlvApplyObjects
(複数) オブジェクトを取ります。