2D游戏没有重新粉刷

时间:2016-04-30 14:34:58

标签: java jframe paint repaint

我检查了其他问题但找不到与我相同的情况,所以这是我的问题。

我正在制作一个2人游戏棒战斗游戏,您可以使用不同的键在同一台计算机上玩。一切都很好但是当我尝试用键移动屏幕上的椭圆时,它不会移动。

这是我的第一堂课的代码 - http://pastebin.com/wA0JXdzr                       第二课 - http://pastebin.com/ArByyirt

我想我需要在游戏循环中的第二堂课中调用重绘,但是它说不能对它进行静态引用。

1 个答案:

答案 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