java - Libgdx:如何将控件与可移动对象分开?

标签 java libgdx touchpad

我对 Libgdx 非常陌生。我浏览了许多有用的教程,但没有一个实现以下结构。 我已经实现了一个可移动对象,它是 InputAdapter 的扩展,并覆盖 keyDown/Up 以更新其(对象)位置。 现在,我已经实现了一个 touchPadController 类,它具有在屏幕上可见的触摸板和旋钮。 然后,我添加了一个变量,它是 touchPadController 类的对象。

我 future 的最终目标是将控件类与任何可移动对象/角色完全分离。

问题: 我只想对可移动对象/字符调用 setInputProcessor,而不是直接对 touchPadController 类调用。我希望父可移动对象调用它自己的控件。 但是,我不知道 touchPadController 函数的调用会发生在哪里?

  • 我尝试过,但没有成功:

    //可移动物体 @覆盖 公共(public) boolean touchDown(int screenX,int screenY,int指针,int按钮){ Gdx.input.setInputProcessor(touchPadController); } //触摸板 Controller @覆盖 公共(public) boolean touchDown(int screenX,int screenY,int指针,int按钮){ parent.newSpeedX = touchpad.getKnobPercentX() * 速度; parent.newSpeedY = touchpad.getKnobPercentY() * 速度; 返回真; }

*我应该在父级(可移动对象)中的哪里调用 touchPadController?

最佳答案

将 Controller 和角色/实体分开,如下所示:

public class Controller extends InputAdapter {
    private Entity _controllee;

    public void setControllee(Entity toControl) {
        _controllee = toControl;
    }

    // Override whichever InputAdapter methods you need to control your moveable objects, e.g.:
    @Override
    public boolean touchDown(int screenX, int screenY, int pointer, int button) {
        _controllee.newSpeedX = touchpad.getKnobPercentX() * Speed;
        _controllee.newSpeedY = touchpad.getKnobPercentY() * Speed;
        return true;
    }
}

最后,在 ApplicationListener 或 Screen 的某个位置创建 Controller 的实例,通过 setControlle 将受控器附加到它,并将其设置为输入处理器,如下所示:

Controller myController = new Controller();
myController.setControllee(/*one of your movable objects*/);
Gdx.input.setInputProcessor(myController);

关于java - Libgdx:如何将控件与可移动对象分开?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22681226/

相关文章:

java - Android:以编程方式设置权重参数与我想要的相反

java - 如何在java中创建一个不可继承和静态的类?

java - 像素点,桌面和安卓

java - libgdx 使用图像百分比

javascript - 在 Javascript 中检测触摸板与鼠标

java - 如何替换 onOptionsItemSelected 中的 fragment ?

libgdx - 是否可以为可能被其他物体破坏的物体创建固定装置?

android - Android 上的 HP TouchPad USB 驱动

java - 导出 jar 时将 Javadoc 添加到 Eclipse 项目