我尝试用Java制作一个简单的游戏,最后得到了这段代码
@Override
public void paint(Graphics g) {
super.paint(g);
Graphics2D g2d = (Graphics2D) g;
g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
RenderingHints.VALUE_ANTIALIAS_ON);
ball.paint(g2d);
}
...
while (true) {
repaint();
Thread.sleep(10);
}
重绘不够频繁。但是,如果我将鼠标移到窗口顶部,它会更频繁地重新开始重绘。按下键盘上的按钮也会加快速度。
我使用Arch i3wm
。
答案 0 :(得分:2)
不要信任互联网上的指南。有时候想想自己。
这是错误的向导。问题是该算法是错误的。我们只需更频繁地绘制,而不是更新我们的世界。
这是一个愚蠢的实现。在并发性方面应该是非常错误的。
Timer timer1 = new Timer(1, new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
game.repaint();
}
});
timer1.start();
Timer timer2 = new Timer(10, new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
game.move();
}
});
timer2.start();