【问题标题】:Jinput init's controllers with up and left as trueJinput init 的控制器,向上和向左为真
【发布时间】:2009-11-24 19:26:51
【问题描述】:

我尝试在这个简单的代码上使用它,JInput 使控制器自动上升和离开!它似乎 input.isControllerUp(Input.ANY_CONTROLLER) 开始是真的!我该如何解决这个问题?

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();
    }
}

【问题讨论】:

  • 我也经历过同样的事情。实际上,似乎有几个轴开始按下,而不是方向键按钮。我什至用两个不同的控制器尝试过,得到了相同的结果。

标签: java jinput


【解决方案1】:

Input 不是 JInput 的一个类,它来自 slick 库。我是直接用JInput的,没有类似的问题。

【讨论】:

    【解决方案2】:

    由于我遇到了同样的问题,所以在研究了一下之后,我发现以下链接解释了问题所在: http://www.java-gaming.org/topics/jinput-is-awsome-i-want-it-s-babies-but-a-slight-issue/21594/msg/176751/view.html

    基本上,一些控制器只是从零以外的某些轴开始。提到的解决方法是在游戏开始时设置一个标志并检查轴的值。在移动任何轴或按下按钮之前,忽略所有控制器输入。在任何轴或按钮状态从其原始值更改后,清除标志并开始接受输入。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-11-08
      • 1970-01-01
      • 2016-07-13
      • 2011-06-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多