Vì vậy, trong trò chơi tôi đang làm việc trên, tôi có một viên đá cẩm thạch theo con chuột, nhưng khi nó làm điều này màn hình nhấp nháy.Làm thế nào để bạn đệm đôi trong java cho một trò chơi?
Nền bao gồm hai hình chữ nhật và 9 hình chữ nhật. Làm thế nào tôi sẽ đi về đệm đôi này? Đây là mã cho cửa sổ chính.
/**
* Write a description of class Window here.
*
* @author (your name)
* @version (a version number or a date)
*/
public class Window extends JApplet implements MouseMotionListener
{
private BufferedImage image;
private BufferedImage side;
private int mouseX;
private int mouseY;
public Window(){
try {
image = ImageIO.read(new File("Backgrounds/violet.jpg"));
side = ImageIO.read(new File("Backgrounds/side margin.jpg"));
} catch (IOException ex) { }
}
private void delay(int delay)
{
try {
Thread.sleep(delay);
} catch (InterruptedException e) {}
}
public void init()
{
this.addMouseMotionListener(this);
}
public void paint (Graphics page)
{
page.drawImage(image, 0, 0, null);
page.setColor(Color.blue);
page.fillRect(0, 0, 160, 160);
page.setColor(Color.black);
page.fillRect(15, 15, 130, 130);
page.setColor(Color.green);
page.fillRect(340, 0, 160, 160);
page.setColor(Color.black);
page.fillRect(355, 15, 130, 130);
page.setColor(Color.yellow);
page.fillRect(0, 340, 160, 160);
page.setColor(Color.black);
page.fillRect(15, 355, 130, 130);
page.setColor(Color.red);
page.fillRect(340, 340, 160, 160);
page.setColor(Color.black);
page.fillRect(355, 355, 130, 130);
page.drawImage(side, 500, 0, null);
page.drawString(Score.getScore(), 560, 110);
//conveyors
page.setColor(Color.gray);
page.fillRect(235, 0, 30, 160);
//marble
delay(100);
page.fillOval(mouseX, mouseY , 40, 40);
}
public void mouseMoved(MouseEvent e)
{
mouseX = e.getX();
mouseY = e.getY();
repaint();
}
public void mouseDragged(MouseEvent e)
{
}
}
cảm ơn rất nhiều :) –
câu trả lời hay, nhưng bạn không cần phải làm điều này vì Swing đã cung cấp đệm đôi. Xem câu trả lời của tôi để biết chi tiết .... – mikera
@dfb Sau khi bạn vẽ (offgc); ' làm thế nào để hình ảnh offscreen được cập nhật? Tôi không thấy biến màn hình bị thay đổi ở bất cứ đâu. –