java最新版本的paint_Java的Paint方法存在问题,刷新速度荒谬

我正在开发一个非常简单的R-Type版本作为大学的工作,但尽管它有效,但工艺速度很慢,所以运动是丑陋和笨拙的.

我使用方法重绘来刷新屏幕,还有其他方法或方法比它更好吗?

主面板上的绘制方法

@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()

int y = (getY()

if (getY()>=maxY||getY()==0) {

if (dy==+1) y=y+1;

}

setPosicion(x, y);

}

解决方法:

>图像fondo应该已经缩放到1200×600.

>我不确定,但是需要super.paint(g)吗?您也可以使用paintComponent.

必须正确完成事件处理(您似乎在按键上向下移动1个像素).我会设置方向和速度(1px),然后将它留给挥杆计时器进行连续移动.

重绘最好是弹性/灵活:重绘(20L)(每秒50帧);

事件如关键可能与EventQueue.invokeLater(new Runnable(){…});.

特别是你可以使用更改区域的重绘.

标签:repaint,java,swing,awt,paint

来源: https://codeday.me/bug/20190917/1810248.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值