gpt4 book ai didi

java双缓冲问题

转载 作者:行者123 更新时间:2023-12-02 08:32:44 25 4
gpt4 key购买 nike

我的小程序代码有什么问题,无法正确呈现双缓冲。我正在尝试并尝试。但未能找到解决方案。请有人告诉我我的代码有什么问题。

import java.applet.* ;
import java.awt.* ;
import java.awt.event.* ;


public class Ball extends Applet implements Runnable
{
// Initialisierung der Variablen
int x_pos = 10; // x - Position des Balles
int y_pos = 100; // y - Position des Balles
int radius = 20; // Radius des Balles

Image buffer=null;
//Graphics graphic=null;

int w,h;

public void init()
{
Dimension d=getSize();
w=d.width;
h=d.height;

buffer=createImage(w,h);
//graphic=buffer.getGraphics();

setBackground (Color.black);

}

public void start ()
{
// Schaffen eines neuen Threads, in dem das Spiel lไuft
Thread th = new Thread (this);
// Starten des Threads
th.start ();
}

public void stop()
{

}

public void destroy()
{

}

public void run ()
{
// Erniedrigen der ThreadPriority um zeichnen zu erleichtern
Thread.currentThread().setPriority(Thread.MIN_PRIORITY);

// Solange true ist lไuft der Thread weiter
while (true)
{
// Verไndern der x- Koordinate
repaint();

x_pos++;
y_pos++;
//x2--;
//y2--;

// Neuzeichnen des Applets


if(x_pos>410)
x_pos=20;

if(y_pos>410)
y_pos=20;

try
{

Thread.sleep (30);
}
catch (InterruptedException ex)
{
// do nothing
}

Thread.currentThread().setPriority(Thread.MAX_PRIORITY);
}
}

public void paint (Graphics g)
{

Graphics screen=null;

screen=g;
g=buffer.getGraphics();

g.setColor(Color.red);


g.fillOval(x_pos - radius, y_pos - radius, 2 * radius, 2 * radius);


screen.drawImage(buffer,0,0,this);

}


public void update(Graphics g)
{

paint(g);
}

}

我应该做什么改变。当绘制离屏图像时,前一个图像也保留在屏幕中。如何从屏幕上删除前一个图像?

最佳答案

看起来您没有在绘制之间清理缓冲区图像。您可以通过将代码更改为来测试这一点:

    g.setColor(Color.red);
g.fillOval(x_pos - radius, y_pos - radius, 2 * radius, 2 * radius);

screen.drawImage(buffer,0,0,this);

g.setColor(Color.green);
g.fillOval(x_pos - radius, y_pos - radius, 2 * radius, 2 * radius);

绘制红球并随后将其擦成绿色,因此您会看到红球留下绿色轨迹。用背景颜色替换绿色就可以了。

关于java双缓冲问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2880411/

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