請告訴我錯了我的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