2

静的メソッドを呼び出す必要があることは理解していますが、非静的メソッドにはインスタンスを作成する必要があります。シンプルな2Dゲームを作ろうとしています。すべてのグラフィックスを、クラスごとに異なる複数のウィンドウではなく、1 つのウィンドウに表示したいと考えています。そこで、グラフィックス 2D 変数 (g2d という名前) に画像を追加する静的な updateBackBuffer メソッドを使用して、paintGraphics クラスを作成することにしました。このコードを試してみましたが、静的コンテキストでは使用できないというエラーが表示されました。これを回避するにはどうすればよいですか?:

public static void updateBuffer(Image image, int XPos , int YPos , int Height , int Width ,   int Rotation, AffineTransform trans) {
    trans.translate(XPos,YPos);
    trans.rotate(Rotation);      //More lines will probably be more lines totransform the shape more as the game gets more advanced
    g2d.drawImage(image,trans,this);    
}
4

2 に答える 2

3

: の行g2d.drawImage(image,trans,this);ではthis、 を定義するクラスのインスタンスを参照しますupdateBufferupdateBufferは宣言されているためstatic、参照thisを使用することはできませんthis。初期化が保証されていないためです。


アップデート

public class Foo {
   public Foo() {
      ...
   }

    public static void updateBuffer(Image image, int XPos , int YPos , int Height , int Width , int Rotation, AffineTransform trans, Foo foo) {
        trans.translate(XPos,YPos);
        trans.rotate(Rotation);      //More lines will probably be more lines totransform the shape more as the game gets more advanced
        g2d.drawImage(image,trans,foo); // <-- 'foo' stands in for 'this'

   }

   public static void main(String[] args) {
      Image i = new Image();
      int x,y,h,w,r;
      AffineTransform t = new AffineTransform();
      Foo f = new Foo();
      Foo.updateBuffer(i,x,y,h,w,r,t,f);
   }
}
于 2013-03-08T20:26:14.720 に答える
1

含まれているオブジェクトにアクセスするには、オブジェクトのインスタンスをパラメーターとして静的メソッドに渡してはどうでしょうか。

public static void updateBuffer(Image image, int XPos , int YPos , int Height , int Width , int Rotation, AffineTransform trans, Object parent)
于 2013-03-08T20:11:21.143 に答える