【问题标题】:libGDX: input processor not working with GrouplibGDX:输入处理器不与组一起使用
【发布时间】:2023-04-10 00:45:01
【问题描述】:

我在屏幕上添加了一个组

//Code in show() method of my screen
MyGroup myGroup = new MyGroup(); 
Stage stage = new Stage();
stage.add(myGroup);
//And also there are few more actors which are omitted
Gdx.input.setInputProcessor(stage);

//Code in my group
public MyGroup extends Group implements InputProcessor{
//Many methods and attributes and a constructor
//Overridden methods of input listener.

在我的组中,我有 5 个演员可以相互交换,所以我不想处理单个演员的任何输入。我想在群里做。

但是当我触摸/触摸拖动时没有调用任何方法。

请帮忙。

【问题讨论】:

    标签: libgdx scene2d


    【解决方案1】:

    这是因为您的MyGroup 未注册为当前活动的InputProcessor。您需要使用InputMultiplexer 来注册Stage 和您的Group

    InputMultiplexer inputMultiplexer = new InputMultiplexer();
    inputMultiplexer.addProcessor(stage);
    inputMultiplexer.addProcessor(myGroup);
    Gdx.input.setInputProcessor(inputMultiplexer);
    

    【讨论】:

    • 现在我又面临一个问题。也就是说,我从 touchDragged 事件中获得的触摸坐标是在 X 轴上镜像的。知道为什么会这样吗?
    • 嗯,这些坐标是屏幕空间坐标。舞台和演员有特殊的方法将坐标转换为不同的坐标系。例如 screenToStage 或 stageToLocal。
    • 谢谢@noone。我使用了camera.unProject。将尝试 screenToStage 和 stageToLocal
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-03-17
    • 2015-09-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-01
    • 1970-01-01
    相关资源
    最近更新 更多