我四处搜索并遇到了不同类型的游戏循环。我一直用
扩展 JFrame 的 Screen.java 还添加了所有侦听器,这些侦听器通常位于两个不同的 .java 中,一个用于键盘,一个用于鼠标。
public void Draw(Graphics g){
Graphics2D g2 = (Graphics2D)g;
//Everything that I render at the screen goes here, or I pass along g2 to them so they can be rendered. Such as level.draw(g2);
repaint();
}
@Override
public void paint(Graphics g){
Image offScreenBuffer = createImage(getWidth(), getHeight());
Draw(offScreenBuffer.getGraphics());
g.drawImage(offScreenBuffer, 0, 0, null);
}
然后在主要我有一个正常的可运行循环与睡眠
@Override
public void run(){
while(true){
//all update code goes here.
try{ Thread.sleep(1); }catch(Exception e){}
}
}
但是我看到有人推荐使用 Timer、Semaphore 和 TimerTask 来创建一个运行循环来处理输入、更新和最后渲染。所以我很清楚哪种方法最好?如果我使用 TimerTask 来创建渲染游戏的循环,它会缝合,我需要将它锁定到某个 fps。
对于我所看到和理解的内容,我可以使用 Timer 和 TimerTask 来安排游戏更新。但否则我不需要那么多更改我的代码,或者我在这里遗漏了什么?