Java Libgdx-输入处理[Android]。我对听众没有什么了解?

Java Libgdx-输入处理[Android]。我对听众没有什么了解?,java,android,input,libgdx,gesture,Java,Android,Input,Libgdx,Gesture,我已经研究了很多不同的方法来处理android的输入,但我真的无法理解。我想知道我为您提供的代码,有人能解释一下我如何将这两种方法集成到我的代码中吗?为什么这样做是恰当的 首先,我将解释我的意图,并向您简要介绍相关代码。我想移动我的角色,向左,向右和跳跃(暂时)。这是我的第一个游戏,它是一个没有自动跳跃的肖像(在渲染方面与涂鸦跳跃有点类似)游戏。我的关卡是随机生成的,它渲染所有对象。现在我想添加输入,但主要的困惑是我应该把代码放在哪里 首先,我有一个GameObject类和一个子类Dynamic

我已经研究了很多不同的方法来处理android的输入,但我真的无法理解。我想知道我为您提供的代码,有人能解释一下我如何将这两种方法集成到我的代码中吗?为什么这样做是恰当的

首先,我将解释我的意图,并向您简要介绍相关代码。我想移动我的角色,向左,向右和跳跃(暂时)。这是我的第一个游戏,它是一个没有自动跳跃的肖像(在渲染方面与涂鸦跳跃有点类似)游戏。我的关卡是随机生成的,它渲染所有对象。现在我想添加输入,但主要的困惑是我应该把代码放在哪里

首先,我有一个
GameObject
类和一个子类
DynamicGameObject
,这是世界上所有对象(平台、电源、硬币、玩家、敌人等)的
super

GameObject.java

public class GameObject {
    public final Vector2 position;
    public final Rectangle bounds;

    public GameObject (float x, float y, float width, float height) {
        this.position = new Vector2(x, y);
        this.bounds = new Rectangle(x - width / 2, y - height / 2, width, height);
    }
public class DynamicGameObject extends GameObject {
    protected static Vector2 velocity;
    public final Vector2 accel;

    public DynamicGameObject (float x, float y, float width, float height) {
        super(x, y, width, height);
        setVelocity(new Vector2());
        accel = new Vector2();
    }

    public Vector2 getVelocity() {
        return velocity;
}

public void setVelocity(Vector2 velocity) {
    DynamicGameObject.velocity = velocity;
}
}
DynamicGameObject.java

public class GameObject {
    public final Vector2 position;
    public final Rectangle bounds;

    public GameObject (float x, float y, float width, float height) {
        this.position = new Vector2(x, y);
        this.bounds = new Rectangle(x - width / 2, y - height / 2, width, height);
    }
public class DynamicGameObject extends GameObject {
    protected static Vector2 velocity;
    public final Vector2 accel;

    public DynamicGameObject (float x, float y, float width, float height) {
        super(x, y, width, height);
        setVelocity(new Vector2());
        accel = new Vector2();
    }

    public Vector2 getVelocity() {
        return velocity;
}

public void setVelocity(Vector2 velocity) {
    DynamicGameObject.velocity = velocity;
}
}
然后我有一个主要的游戏对象,在这个对象中,我将执行一些动作。在这门课上,我会进行任何输入处理吗

鲁本。java[相关代码]

public Ruben (float x, float y) {
    super(x, y, RUBEN_WIDTH, RUBEN_HEIGHT);
    state = RUBEN_STATE_IDLE;
    stateTime = 0;
    grounded = true;
    facingRight = true;
    }

public void update (float deltaTime) {
    //getVelocity().add(World.gravity.x * deltaTime, World.gravity.y * deltaTime);
    position.add(velocity.x * deltaTime, velocity.y * deltaTime);
    bounds.x = position.x - bounds.width / 2;
    bounds.y = position.y - bounds.height / 2;

    if (position.x < 0) position.x = World.WORLD_WIDTH;
    if (position.x > World.WORLD_WIDTH) position.x = 0;
    stateTime += deltaTime;
}
然后,使用一个变量来指示屏幕上的投掷已经被指向上方,当布尔触发器为真时,将鲁本的状态设置为跳跃,并改变y轴上的速度。它仍然不起作用。有人能帮忙吗

如果你还需要什么,请告诉我

主要游戏类

public class GameView extends Game {
    // used by all screens
    public SpriteBatch batcher;
    @Override
    public void create () {
        batcher = new SpriteBatch();
        Settings.load();
        Assets.loadBackgrounds();
        Assets.loadItems();
        Assets.loadRuben();
        setScreen(new MainMenuScreen(this));

    }

    @Override
    public void render() {
        super.render();
    }
}

如果您想使用
InputAdapter
,如libGdx中的
GestureDetector
,则必须对其进行设置,不知道是否进行了设置,否则将不会从
GestureDetector
调用任何方法。希望这是主要问题

此外,如果您想使用多个InputAdapter,则必须使用
输入多路复用器
,尤其是如果您还想使用用于GUI的Stage

编辑:
我用屏幕实现它的首选方法是
MainMenuScreen extends Screen实现GestureDetector.GestureListener
show()
方法
Gdx.input.setInputProcessor(新的GestureDetector(this))然后,您还可以通过这些方法轻松访问要控制的对象。

不幸的是,这不是我想要的。我知道该实施什么。我只是不知道在我的代码中应该在哪里实现它,我提到了我在问题中已经做过的一次尝试,希望获得关于是否有实现GestureListener的具体方法的建议或信息。好的,我认为输入没有被识别。在初始化重要的东西时,你的主类看起来怎么样?什么是基类?感谢您的及时回复,我已经调整了问题。您是指继承所有内容的类还是更新主游戏的类?我使用
Screen
实现基类的首选方法是
MainMenuScreen Extendes Screen implements GestureDetector.GestureListener
show()
method
Gdx.input.setInputProcessor(新的GestureDetector(this))然后您还可以通过这些方法轻松访问要控制的对象。
    Gdx.input.setInputProcessor(new GestureDetector(new GestureHandler(this)));
    InputMultiplexer inputMultiplexer = new InputMultiplexer();
    inputMultiplexer.addProcessor(stage);
    inputMultiplexer.addProcessor(new GestureDetector(new GestureHandler(this)));
    Gdx.input.setInputProcessor(inputMultiplexer);