2D游戏不重绘
2D Game not repainting
我查看了其他问题,没有找到与我情况相同的问题,所以这是我的问题。
我正在制作一款 2 人棍棒格斗游戏,您可以使用不同的键在同一台计算机上玩。一切都很好,但是当我尝试用按键移动屏幕上的椭圆时,它没有移动。
这是我第一个 class - http://pastebin.com/wA0JXdzr 的代码
第二个 class - http://pastebin.com/ArByyirt
我想我需要在游戏循环中的第二个 class 中调用重绘,但它说它不能对其进行静态引用。
您正试图直接从另一个 class 调用非静态方法,这在 java 中是不合法的。您的第一个 class 中的 paint() 方法是非静态方法。您能够使用变量 stickx2 等,因为它们是在您的第一个 class.
中定义的静态变量
因此,我建议您在 gameLoop class 中创建一个 stickFrame() 对象,然后将所有代码复制到您的 stickframe main 方法中,并将其放入您的 gameLoop main 方法中。强烈不建议您有两种主要方法。
在您的序列化 ID 下方声明一个 Stick Frame 变量。
StickFrame s;
然后在你的 gameLoop 构造函数中实例化它
s = new StickFrame();
现在我们需要修复另一个 class 问题的重绘。
为此,我们需要 gameLoop Class.
中的一个方法
public void repaintStickFrame()
{
s.repaint();
}
然后调用
s.repaintStickFrame() in your loop.
或者你可以打电话给
s.repaint();//place in loop
这里有一个 link 与您的问题相似并且也有解决方案的问题
Calling repaint from another class JFrame
这里有一个 link 解释了如何在创建对象方法后调用对象方法(就像我们上面所做的那样,这允许我们从不同的 class):
https://docs.oracle.com/javase/tutorial/java/javaOO/usingobject.html
我查看了其他问题,没有找到与我情况相同的问题,所以这是我的问题。
我正在制作一款 2 人棍棒格斗游戏,您可以使用不同的键在同一台计算机上玩。一切都很好,但是当我尝试用按键移动屏幕上的椭圆时,它没有移动。
这是我第一个 class - http://pastebin.com/wA0JXdzr 的代码 第二个 class - http://pastebin.com/ArByyirt
我想我需要在游戏循环中的第二个 class 中调用重绘,但它说它不能对其进行静态引用。
您正试图直接从另一个 class 调用非静态方法,这在 java 中是不合法的。您的第一个 class 中的 paint() 方法是非静态方法。您能够使用变量 stickx2 等,因为它们是在您的第一个 class.
中定义的静态变量因此,我建议您在 gameLoop class 中创建一个 stickFrame() 对象,然后将所有代码复制到您的 stickframe main 方法中,并将其放入您的 gameLoop main 方法中。强烈不建议您有两种主要方法。
在您的序列化 ID 下方声明一个 Stick Frame 变量。
StickFrame s;
然后在你的 gameLoop 构造函数中实例化它
s = new StickFrame();
现在我们需要修复另一个 class 问题的重绘。 为此,我们需要 gameLoop Class.
中的一个方法 public void repaintStickFrame()
{
s.repaint();
}
然后调用
s.repaintStickFrame() in your loop.
或者你可以打电话给
s.repaint();//place in loop
这里有一个 link 与您的问题相似并且也有解决方案的问题
Calling repaint from another class JFrame
这里有一个 link 解释了如何在创建对象方法后调用对象方法(就像我们上面所做的那样,这允许我们从不同的 class):
https://docs.oracle.com/javase/tutorial/java/javaOO/usingobject.html