2013-04-10 74 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