1

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);  
    }
}
4

0 に答える 0