请告诉我错了我的applet代码不呈现双缓冲correctly.I我试图 和trying.But未能获得solution.Plz PLZ有人告诉我什么是错我的代码。的java双缓冲问题
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);
}
}
我应该make.When什么改变屏幕外的图像绘制以前的形象也留在screen.How擦除从屏幕前面的图像?
对于初学者来说,你可以停止发布示例代码与10点空的方法。 – 2010-05-21 07:56:27
嗨罗塞尔。你只接受29个问题中的33%。你真的收到20个问题的无法解答吗?请检查一下,并在您的文章中更换“plz plz plz”,以了解有关哪些功能无法正常工作的更多详细信息。那么你可能有更好的机会接收答案。 – chiccodoro 2010-05-21 08:01:45
好的,我发现我的问题。我创建了一个新的图像缓冲区= createImage(w,h); 'screen.drawImage(buffer,0,0,this)'后面的' ';'然后清理问题就解决了。但是现在出现了另一个问题,我的移动球也在闪烁。所以我想知道是否在这里执行双缓冲。如何检查这个,任何人都可以帮忙? – russell 2010-05-21 09:39:04