2013-04-22 33 views
0

我們正在嘗試製作迷你高爾夫球比賽。MouseEvent造成打擊

的問題是我們的方向和速度鏈接到線

所以今天的主要問題將是鼠標的點擊鏈接到一個位置,也給我們的圖像的運動的開始。 我們的想法是將運動放置在一個單獨的類中,並在mouseevent中調用該類,但不幸的是它不起作用(或者我們不知道如何使其工作)。 對於這個位置,我們發起了一個'x'和'y'變量,他們將被運動課程調整。

public Afb atoom; 
    //variabelen voor de bal  
    public Frame venster; 
    public JButton terug; 
    public JButton begin; 
    public Image jens; 
    public Image groen; 
    Timer t = new Timer(5,this); 
    int x=50, y=100, velX=2, velY=2; 
    public int x1; 
    public int y1; 
    //------------------------------------------------------------------------------- 

    //--------------------------------KNOPPEN IN U PANEEL---------------------------- 
    public SpelPaneel(Frame venster) 
    { 
     this.venster = venster; 
     atoom = new Afb("atoom.jpg",0,0);  
     terug = new JButton("TERUG"); 
     terug.addActionListener(this); 
     this.add(terug);   
     begin = new JButton("START"); 
     begin.addActionListener(this); 
     this.add(begin);   
    } 

    public void mouseClicked(MouseEvent event) 
    { 
     x1 = event.getX(); 
     y1 = event.getY(); 
    } 
    //------------------------------------------------------------------------------- 

    //------------------------------------------------------------------------------- 

    //-----------------------------------SUPERELEKTRON------------------------------- 
    public void paintComponent(Graphics j) 
    { 
     //dit moet het balletje vervangen 
     super.paintComponent(j);   
     //groen = new ImageIcon(getClass().getResource("groen.jpg")).getImage(); 
     //j.drawImage(groen,25,75,850,450,null);   
     jens = new ImageIcon(getClass().getResource("superatoompje.jpg")).getImage(); 
     j.drawImage(jens,x,y,50,50,this);  
     j.drawLine(x,y,x1,y1); 
     j.drawRect(25,75,850,450); 
    } 

    //------------------------------------------------------------------------------- 

    public void actionPerformed(ActionEvent ae) 
    { 
     if (ae.getSource() == begin) 
      { 
      t.start(); 
         } 

     else if(ae.getSource() == terug) 
      venster.switchPanel(); 

     if (x<25 || x> 825) 
     { 
      velX = -velX; 
     } 
     if (y<75 || y>475) 
     { 
      velY = -velY; 
     } 
     x+=velX; 
     y+=velY; 
     repaint(); 
    } 
} 
+0

幀,應該是JFrame,建議不要混合AWT和Swing,以便更快地發佈[SSCCE](http://sscce.org/),更好的幫助,短的,可運行的,可編譯的 – mKorbel 2013-04-22 10:23:27

回答

2

example顯示如何畫一條線作爲鼠標被拖動。該行具有端點p1p2。由於速度包括大小和方向,所以通用接口是在球頭上設置p1並且在球杆頭上設置p2。釋放時,使用線的斜率來推斷方向和線的長度來推斷量值。作爲參考,這個KineticModel使用矢量算法來模擬進行彈性碰撞的粒子的位置和速度。

附錄:看到更多球動畫的例子herehere

+1

恭喜達到三位數;) – MadProgrammer 2013-04-22 11:15:53

+0

@MadProgrammer:這讓我想起了你的相關示例,上面添加了;請根據需要進行編輯。 – trashgod 2013-04-22 11:24:13