之前有人說這已被回答,我找不到任何地方,因爲我沒有使用緩衝圖像,即時通訊使用g.drawRect(...)等等。 ..畫我的對象,這是我被告知要做的,因爲我現在正在學習如何編碼。但由於某種原因,屏幕一直閃爍,我想要一些幫助。使用BreezyGUI閃爍的paint方法[Java]
所以,我很新的編碼,而我正在嘗試編寫一個非常簡單的炸彈人遊戲。而且我不使用BufferedImages,我只是使用Graphics畫圖來繪製角色。而且,當我添加KeyBinding時,我使用repaint()來在按下按鍵時「更新」遊戲。但這是非常麻煩的,當我按住其中一個按鈕時,它會出現毛刺和顯示空白屏幕。我認爲這是由於我重新粉刷它,但我不知道如何去解決這個問題。這裏是我使用的一些代碼。
public static void left(Graphics g) {
bomberManLowerLeft(g, -90 + dx, -20 + dy);
bomberManBodyLeft(g, -90 + dx, -20 + dy);
bomberManFaceLeft(g, -90 + dx, -20 + dy);
}
public static void right(Graphics g) {
bomberManLowerRight(g, -90 + dx, -20 + dy);
bomberManBodyRight(g, -90 + dx, -20 + dy);
bomberManFaceRight(g, -90 + dx, -20 + dy);
}
public void paint(Graphics g) {
if (down) {
front(g);
} else if (up) {
back(g);
} else if (left) {
left(g);
} else if (right) {
right(g);
}
}
public static void main(String[] args) {
Frame frm = new BomberMan();
frm.setSize(750, 750);
frm.setVisible(true);
frm.add(panel);
frm.setBackground(Color.black);
}
@Override
public void keyPressed(KeyEvent e) {
int kCode = e.getKeyCode();
if (kCode == KeyEvent.VK_D) {
System.out.println("Right");
dx += 3;
down = false;
right = true;
left = false;
up = false;
repaint();
} else if (kCode == KeyEvent.VK_A) {
System.out.println("Left");
dx -= 3;
down = false;
right = false;
left = true;
up = false;
repaint();
} else if (kCode == KeyEvent.VK_W) {
System.out.println("Up");
dy -= 3;
down = false;
right = false;
left = false;
up = true;
repaint();
} else if (kCode == KeyEvent.VK_S) {
System.out.println("Down");
dy += 3;
down = true;
right = false;
left = false;
up = false;
repaint();
} else if(kCode == KeyEvent.VK_SPACE){
placeBomb = true;
bombdx = dx;
bombdy = dy;
repaint();
}
}
我真的可以使用一些幫助,謝謝。如果你在這裏做需要完整的代碼是:PASTEBIN-CODE