2013-04-22 48 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