0

画面上に 2 つの四角形があり、一方の四角形が移動し、もう一方が静止している単純な Java ゲームをコーディングしました。移動する四角形はキーボードの矢印入力で移動し、上下左右に移動できます。私が抱えている問題は、画面に長方形を描画することです。次のように変数を設定しています。

  float buckyPositionX = 0;
    float buckyPositionY = 0;
    float shiftX = buckyPositionX + 320;//keeps user in the middle of the screem
    float shiftY = buckyPositionY + 160;//the numbers are half of the screen size
//my two rectangles are shown under here
    Float rectOne = new Rectangle2D.Float(shiftX, shiftY,90,90);
    Float rectTwo = new Rectangle2D.Float(500 + buckyPositionX, 330 + buckyPositionY, 210, 150);

そして、render メソッド (画面に描画するすべてのものを保持します) の下で、Java に 2 つの四角形を描画するように指示しました。

    public void render(GameContainer gc, StateBasedGame sbg, Graphics g) throws SlickException{
        //draws the two rectangles on the screen
        g.fillRect(rectOne.getX(), rectOne.getY(), rectOne.getWidth(), rectOne.getHeight());
        g.fillRect(rectTwo.getX(), rectTwo.getY(), rectTwo.getWidth(), rectTwo.getHeight());

   }

しかし、fillRect の下に次のエラーが表示されます。

This method fillRect(float,float,float,float) in the type graphics is 
    not applicable for the arguments (double,double,double,double)

これは私が理解していることから、fillRectで提供される情報はすべてがフロートであるべきだと言っているので、私を混乱させています。なぜこのエラーが発生し続けるのですか?

4

1 に答える 1

2

これは double 値に継ぎ目があります。

rectOne.getX(), rectOne.getY(), rectOne.getWidth(), rectOne.getHeight()

メソッドは double を返します。こちらのAPIをご覧ください

float 値を設定するので、単純にこれを使用します。

    g.fillRect((float)rectOne.getX(), (float)rectOne.getY(), (float)rectOne.getWidth(), (float)rectOne.getHeight());
    g.fillRect((float)rectTwo.getX(), (float)rectTwo.getY(), (float)rectTwo.getWidth(), (float)rectTwo.getHeight());
于 2013-01-03T22:36:51.403 に答える