私の理解では、キャンバスを変更するほどオブジェクトをキャンバスに保存することはありません。作成する円は、キャンバスへの一連のコマンドとしてのみ存在します。それを何らかの方法で保存する場合は、それを保存するオブジェクトを作成する必要があります。
私がキャンバスを学び、小さなゲームを書いたとき、私はdraw(Canvas c)
機能を持ったオブジェクトを作成しました。関数内では、キャンバスに描画するために必要なすべての操作を実行し、後で呼び出すことができるX、Y座標も維持しました。
public class SomeDrawableObject implements Drawable {
private float X;
private float Y;
public SomeDrawableObject(float X, float Y) {
this.X = X;
this.Y = Y;
}
@Override
public void draw(Canvas c) {
c.drawCircle(...);
//or c.drawWHATEVER(...);
}
public float getX() {
return X;
}
//etc.
}
次に、キャンバスを変更しているクラスから、キャンバスSomeDrawableObject
に配置されたすべてのコレクションを維持して把握し、クラスに保存した位置/色/すべてを思い出すことができます。クラスなどを拡張することもできます。