Player
以下のクラスのコンストラクターでそのオブジェクトを作成するときに、キャンバスの幅と高さの値をクラスのコンストラクターに渡す必要がありGameSurfaceView
ます。問題は、その時点でキャンバスの幅と高さの値を取得できないことです。これまでのところ、メソッド内でキャンバスの幅と高さを取得できる唯一の方法ですがRun()
、オブジェクトが既に作成されているため、遅すぎます。
GameSurfaceView
の参照をクラスの 2 番目のコンストラクターに渡すというアイデアを思いついたPlayer
ので、キャンバスからその方法で値を渡して取得することができましたが、その時点でも値はないと思います。オブジェクトが作成されました!
私の質問が不明確であるかどうか尋ねてください。以下は、私が使用しているコードの主要部分です。また、MainActivity
クラスを使用して、以下のクラスのオブジェクトを作成しています。
public class GameSurfaceView extends SurfaceView implements Runnable {
SurfaceHolder surfaceHolder;
Canvas canvas;
int screenWidth, screenHeight;
// Constructor
public GameSurfaceView(Context context) {
super(context);
surfaceHolder = getHolder();
// Create player sprite object
player = new Player(texturePlayer, xPlayer, yPlayer);
}
// Create player sprite object alternative 2
player = new Player(this, texturePlayer, xPlayer, yPlayer);
}
@Override
public void run() {
canvas = surfaceHolder.lockCanvas();
screenWidth = canvas.getWidth();
screenHeight = canvas.getHeight();
// Do the drawing to screen here
surfaceHolder.unlockCanvasAndPost(canvas);
}
}