java - BufferedImage 闪烁问题

标签 java bufferedimage

你好,我正在编写一个小游戏,它即将完成,唯一不起作用的是 ImageBuffer。每 10 毫秒我调用一次方法 repaint()。我的paint()方法如下:

private Graphics2D g2D;

public void paint (Graphics g) {
    BufferedImage bimage = ((Graphics2D)g).getDeviceConfiguration().createCompatibleImage(700, 600, Transparency.OPAQUE);
    g2D = bimage.createGraphics();
    g2D.setFont(font);        
    for(Wall wall: walls){
        wall.paint(g2D);
    }
    g2D.setColor(Color.orange);
    paddle.paint(g2D);
    g2D.drawString(score + "", 150,50);
    g2D.drawString("record: "+topscore  , 350,50);
    g2D.setColor(Color.red);
    ball.paint(g2D);
    g.drawImage(bimage,0,0,this);
}

但这似乎并没有消除闪烁。我认为在开始绘制缓冲图像之前,屏幕会以某种方式被清除。 谁能帮我解决这个问题? 谢谢!

最佳答案

您需要覆盖更新:

public void update() {
    paint();
}

update 的默认实现在调用 paint 之前用背景颜色填充整个区域,这就是导致闪烁的原因。

关于java - BufferedImage 闪烁问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4770411/

相关文章:

java - 如何使用ant在文件内的特定位置写入

java - 这个语句在Java中合法吗

linux - Java 自动格式化日期信息。用其他语言

java - 将彩色图像转换为背景/白色图像

java - 透明 BufferedImage 在 JLabel 上绘制时显示为黑色背景

java - BufferedImage 颜色 channel 蒙版

java - List to Set 不影响元素的顺序

java - 什么是 JDBC(Java 数据库连接)?

java - 检测 BufferedImage 是否包含透明像素

Java BufferedImage 不工作