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