gpt4 book ai didi

java - Java 的 Paint 方法的问题,刷新速度荒谬

转载 作者:行者123 更新时间:2023-11-29 07:09:14 24 4
gpt4 key购买 nike

作为大学的工作,我正在开发一个非常简单的 R-Type 版本,但尽管它有效,但飞行器速度非常慢,因此运动丑陋且笨拙。我使用重绘方法刷新屏幕,还有其他方法或方法比它更好吗?

Video of Movement

在主面板上绘制方法

@Override
public void paint(Graphics g) {
super.paint(g);
Graphics2D g2 = (Graphics2D) g;
g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
RenderingHints.VALUE_ANTIALIAS_ON);
g2.drawImage(fondo, 0, 0,1200,600,this);
pj.paint(g2);
g2D=g2;

}

PJ的画法

public void paint(Graphics2D g) {

g.drawImage(imagen,x,y,this);
}

PJ的走法

public void move (KeyEvent e)  {
int dx = 0; int dy = 0;
int code = e.getKeyCode();

switch (code) {
case KeyEvent.VK_Q: dy-=1; break;
case KeyEvent.VK_A: dy+=1; break;
case KeyEvent.VK_P: dx+=1; break;
case KeyEvent.VK_O: dx-=1; break;
}

int x = (getX()<maxX&&getX()!=0) ? getX()+dx : getX();
int y = (getY()<maxY&&getY()!=0) ? getY()+dy : getY();

if (getY()>=maxY||getY()==0) {
if (dy==+1) y=y+1;
}

setPosicion(x, y);

}

最佳答案

  • 图像 fondo 应该已经缩放到 1200x600。
  • 我不确定,但是需要 super.paint(g) 吗?您也可以使用 paintComponent

事件处理(您似乎在按下按键时移动了 1 个像素)必须正确完成。我会设置方向和速度 (1px),并将其留给 Swing 计时器来进行连续移动。

最好的重绘是弹性/灵活的:repaint(20L)(每秒 50 帧);类似按键的事件可能与 EventQueue.invokeLater(new Runnable() { ... });

特别是你可以对改变的区域使用重绘。

关于java - Java 的 Paint 方法的问题,刷新速度荒谬,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15897947/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com