2013-02-01 15 views
0

這是我的第一篇文章,所以如果需要其他信息,請讓我知道。 我正在Java GUI中製作遊戲,只有兩個有希望的快速問題。目前,我可以畫一個地圖屏幕和泛用下面的代碼周圍的地圖: 私有類MoveMap實現的MouseMotionListener {在GUI地圖上平移Java

@Override 
    public void mouseDragged(MouseEvent e) { 

    } 

    @Override 
    public void mouseMoved(MouseEvent e) { 

     if(e.getX() > swidth-30){ 
      if(xmod+(columns*30) > swidth){ 
       xmod-=30; 
       repaint(); 
      } 
     } 
     else if(e.getX() < 30){ 
      if(xmod < 0){ 
       xmod+=30; 
       repaint(); 
      } 
     } 
     else if(e.getY() > sheight-30){ 
      if(ymod+(rows*30) > sheight){ 
       ymod-=30; 
       repaint(); 
      } 
     } 
     else if(e.getY() < 30){ 
      if(ymod < 0){ 
       ymod+=30; 
       repaint(); 
      } 
     } 
     else{ 

     } 

    } 

} 

唯一的問題是鼠標必須在屏幕的邊緣不斷移動,不斷泛。我的問題是,如果有方法讓鼠標在屏幕邊緣並在更新圖形時持續平移?我的第二個問題是,如果這可以適用於人物移動以及?我想也許一個線程將是一個可能的解決方案,但不熟悉使用它們。謝謝!

回答

3

我可以想出兩種方法來實現這一點。

你可以...

啓動javax.swing.Timer,將根據需要更新X/Y位置和重繪屏幕當過鼠標在屏幕邊緣的給定距離內輸入。你會,顯然停止計時器在鼠標移回了;)

你可以...

使用背景Thread監視鼠標位置,當它進入「觸發」區域,將更新x/y值並觸發重繪,確保將電話重新同步至EDT;)

+0

首先感謝您的快速響應!我只是有點困惑,計時器或後臺線程如何解決它。就像我會保持MouseMotionListener? – yanman1234

+0

好吧,讓計時器工作,但當鼠標離開邊緣時繼續移動地圖。我有'「Timer」.stop();'我在哪裏檢測鼠標是否離開,但似乎忽略它。有什麼建議麼? – yanman1234

+1

我現在不在PC上,但它聽起來像你沒有使用相同/單一的計時器參考 – MadProgrammer