2009-11-24 23 views
1

我試過在這個簡單的代碼上使用它,並且JInput使控制器自動升起和離開! IT看到input.isControllerUp(Input.ANY_CONTROLLER)開始爲真!我怎樣才能解決這個問題?Jinput init的控制器up和left爲真

import org.newdawn.slick.AppGameContainer; 
import org.newdawn.slick.BasicGame; 
import org.newdawn.slick.Color; 
import org.newdawn.slick.GameContainer; 
import org.newdawn.slick.Graphics; 
import org.newdawn.slick.Input; 
import org.newdawn.slick.SlickException; 


public class Test1 extends BasicGame{ 
    float x = 300; 
    float y = 300; 

    public Test1() 
    { 
     super("Controller Test 1"); 
    } 

    @Override 
    public void init(GameContainer gc) 
      throws SlickException { 
    } 

    public void updateControler(GameContainer gc){ 
     Input input = gc.getInput(); 


      System.out.println("input.isControllerUp(Input.ANY_CONTROLLER)" + input.isControllerUp(Input.ANY_CONTROLLER)); 

      if(input.isKeyDown(Input.KEY_UP) || input.isControllerUp(Input.ANY_CONTROLLER)) { 
       y--; 
      } 

      else if(input.isKeyDown(Input.KEY_DOWN) || input.isControllerDown(Input.ANY_CONTROLLER)) { 
       y++; 
      } 

      else if(input.isKeyDown(Input.KEY_LEFT) || input.isControllerLeft(Input.ANY_CONTROLLER)) { 
       x--; 
      } 

      else if(input.isKeyDown(Input.KEY_RIGHT) || input.isControllerRight(Input.ANY_CONTROLLER)) { 
       x++; 
      } 
    } 

    @Override 
    public void update(GameContainer gc, int delta) 
      throws SlickException  
    {; 
     updateControler(gc); 
    } 


    public void render(GameContainer gc, Graphics g) 
      throws SlickException 
    { 
     g.setColor(Color.red); 
     g.fillRect(x,y,50,50); 
    } 

    public static void main(String[] args) 
      throws SlickException 
    { 
     AppGameContainer app = 
      new AppGameContainer(new Test1()); 

     app.setDisplayMode(800, 600, false); 
     app.start(); 
    } 
} 
+0

我也經歷過同樣的事情。實際上,似乎有幾個軸開始按下,而不是方向按鈕。我甚至用兩個不同的控制器試過,得到了相同的結果。 – 2012-01-29 20:35:49

回答

0

輸入不是JInput類,它來自光滑的庫。我直接使用JInput並且沒有類似的問題。

0

研究這個有點,因爲我有同樣的問題後,我發現下面的鏈接解釋的問題是什麼: http://www.java-gaming.org/topics/jinput-is-awsome-i-want-it-s-babies-but-a-slight-issue/21594/msg/176751/view.html

基本上,一些控制器只是一些在除了零的東西軸的開始。提到的解決方法是在遊戲開始時設置一個標誌並檢查軸的值。在任何軸被移動或按下按鈕之前,忽略所有控制器輸入。在任何軸或按鈕狀態從其原始值改變後,清除標誌並開始接受輸入。