gpt4 book ai didi

java - 需要帮助使用 'this' - 不能在静态上下文中使用

转载 作者:行者123 更新时间:2023-11-30 07:18:33 25 4
gpt4 key购买 nike

我知道必须调用静态方法,但非静态方法必须创建一个实例。我正在尝试制作一个简单的 2D 游戏。我希望我所有的图形都出现在一个窗口中,而不是每个类的几个不同的窗口,这就是正在发生的事情。所以我决定创建一个带有静态 updateBackBuffer 方法的 paintGraphics 类,该方法将图像添加到 graphics2D 变量(名为 g2d)。我试过这段代码,但出现错误,我不能在静态上下文中使用它,我该如何解决这个问题?:

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

最佳答案

g2d.drawImage(image,trans,this); 行中,this 指的是定义 updateBuffer< 的类的实例。由于 updateBuffer 被声明为 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);
}
}

关于java - 需要帮助使用 'this' - 不能在静态上下文中使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15302397/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com