我正在爲學校做一個項目,我選擇重新創建Duck Hunt。到目前爲止,這種情況相當不錯,除了一個問題,飛出的鴨子移動得太快,我把它設置爲如下,x和y顯然是鴨子的x和y座標,而且我有一個循環,這是y--。但就像我說的那樣,速度太快了,我不能使用圖形類的雙打,只有一個int。下面是我寫的代碼。我的動畫在屏幕上移動得太快(圖形)(初學者)
(第一篇文章,我認爲我正確地發佈的代碼,對不起,如果我沒有)
import java.applet.Applet;
import java.awt.*;
import java.awt.event.*;
import java.awt.TextField;
import java.awt.MouseInfo;
public class duck extends Applet implements ActionListener, MouseListener{
boolean start= true;
int x;
int y=400;
int bx=350;
int by= 285;
int counter=1;
int c=2;// (int) (Math.random()*4)+1;
boolean dog=true;
boolean dog3=false;
boolean bird=false;
public void init(){
}
public void paint(Graphics g){
//BackGround
this.resize (612,574);
g.drawImage(getImage(getCodeBase(), "background.png"), 0, 0, this);
g.drawString("" +c, 10, 300);
//Crosshair Follow
g.drawOval (MouseInfo.getPointerInfo().getLocation().x-24, MouseInfo.getPointerInfo().getLocation().y-63, 50, 50);
g.drawLine (MouseInfo.getPointerInfo().getLocation().x-24, MouseInfo.getPointerInfo().getLocation().y-37, MouseInfo.getPointerInfo().getLocation().x+24, MouseInfo.getPointerInfo().getLocation().y-37);
g.drawLine (MouseInfo.getPointerInfo().getLocation().x, MouseInfo.getPointerInfo().getLocation().y-64, MouseInfo.getPointerInfo().getLocation().x, MouseInfo.getPointerInfo().getLocation().y-15);
g.drawString ("" +MouseInfo.getPointerInfo().getLocation().x +" " +MouseInfo.getPointerInfo().getLocation().y, 100, 100);
//this.repaint();
//Dog
if (dog==true)
g.drawImage(getImage(getCodeBase(), "dog.gif"), x, y, this);
x++;
this.repaint();
if (x>200){
dog=false;
dog3=true;
}
if (y<285){
dog3=false;
//this.repaint();
}
if (dog3==true){
y=y-1;
bird=true;
}
//Bird
if (bird==true){
//Start Path 1 (Right Then Left at y 100)
if (c==1){
g.drawImage(getImage(getCodeBase(), "birdleft.gif"), bx, by, 75, 75, this);
bx++;
by--;
counter++;
if (by>200){
bx=bx-3;
by--;
}
}
//End Path 1
//Start Path 2
if (c==2){
g.drawImage(getImage(getCodeBase(), "birdleft.gif"), bx-100, by, 75, 75, this);
bx--;
by--;
counter++;
if (by<200){
bx++;
by--;
}
}
//End Path 2
} //End Bird True
} //End Graphics
public void mouseClicked(MouseEvent me) {
//this.repaint();
}
public void mousePressed(MouseEvent me) {}
public void mouseReleased(MouseEvent me) {}
public void mouseEntered(MouseEvent me) {}public void mouseExited(MouseEvent me) {}
public void actionPerformed(ActionEvent e){
}
}
繪畫應該繪畫,它應該包含儘可能少的邏輯,而不是更新UI的狀態。您可能還想了解一下[如何編寫鼠標監聽程序](http://docs.oracle.com/javase/tutorial/uiswing/events/mouselistener.html) – MadProgrammer 2014-11-02 04:05:38