2013-04-10 83 views
0

如何计算从JAVA中的鼠标IR事件接收到的12个坐标的平均值?来自鼠标的平均X和Y坐标JAVA

我的意思是: 每个动作都以X和Y坐标发给我。在12个坐标 计算这些12的平均坐标

我知道如何获得一个数组的平均 缓冲这些坐标,但如何当X是一个坐标工作? X还没有定义,因为它改变了,所以我该怎么做呢?

像这样的东西做工作:

int count = 0; 
    double buffer = 0; 
    while(true){ // loop waarin inputs binnen komen 
    if(true){ // stel dat je een input binnenkrijgt 
      count++; 
      buffer += oX; 
       if(count == 12){ // als je er 12 gekregen hebt 
       //send_output(buffer/12); // verzend 
       // reset buffer en count 
       System.out.println(buffer/12); 
         buffer = 0; 
        count = 0; 

        } 
      } 
     } 

@edit 也许更好地理解它:

public void onIrEvent(IREvent arg0) {  
    int oX; 
    int oY; 

    oX = arg0.getAx()/10; 
    oY = arg0.getAy()/10; 

牛和OY有一个缓冲区中的推杆那里可以在12个坐标。然后计算它们的平均值。

在此先感谢

亲切的问候

帕斯卡尔

+0

您希望您的鼠标位置的移动平均线:http://stackoverflow.com/questions/3793400/是在那里一个功能在java获得移动平均 – 2013-04-10 08:49:18

+0

但我真的不知道如何调用此方法或函数。鼠标的IRevent给我X和Y,然后这些必须被缓冲,并且这12个的平均值将会返回。是什么使得鼠标不同于数组列表的x和y坐标? – 2013-04-10 08:54:21

回答

0

bufferX,并bufferY两个变量公开;并设定他们在这个方法

int i =0; 
public void onIrEvent(IREvent arg0) {  
    int oX; 
    int oY; 

    oX = arg0.getAx()/10; 
    oY = arg0.getAy()/10; 

/////////////here set the buffer 
    if(i<12){ 
    bufferX += oX; 
    bufferY +=oY; 
} 
i++; 
} 

尝试这个例子:

public class MouseMotionEventDemo extends JPanel implements MouseMotionListener { 

private int mX, mY; 
int bufferX = 0; 
int bufferY = 0; 
int count = 0; 

public MouseMotionEventDemo() { 
    addMouseMotionListener(this); 
    setVisible(true); 
} 

public void mouseMoved(MouseEvent me) { 
    mX = (int) me.getPoint().getX(); 
    mY = (int) me.getPoint().getY(); 
    bufferX += mX; 
    bufferY += mY; 
    System.out.println("X: "+mX+" Y:"+mY); 
    count++; 
    if (count == 12) { 
     System.out.println("X average =" +bufferX/12); 
     System.out.println("Y average =" +bufferY/12); 
     count = 0; 

    } 
} 

public void mouseDragged(MouseEvent me) { 
    } 

public static void main(String[] args) { 
    JFrame f = new JFrame(); 
    f.getContentPane().add(new MouseMotionEventDemo()); 
    f.setSize(200, 200); 
    f.show(); 


} 

}

+0

非常感谢。这实际上就是我的意思。 – 2013-04-10 09:54:09

+0

欢迎随时:) – 2013-04-10 09:54:35

+0

另请参阅[*初始线程*](http://docs.oracle.com/javase/tutorial/uiswing/concurrency/initial.html)。 – trashgod 2013-04-10 10:33:53