gpt4 book ai didi

java - 多路复用器不处理第二个输入处理器

转载 作者:行者123 更新时间:2023-11-30 08:41:05 24 4
gpt4 key购买 nike

使用 Scene2d,我在屏幕类中创建了一个 InputMultiplexer。在我的屏幕类中,我创建了舞台并将其添加到 InputMultiplexer。我还创建了一个处理 UI 的组。我将 UI 组添加到舞台。然后我将该组添加到多路复用器。

此时,多路复用器首先是阶段,然后是 UI 组。

我的舞台像这样覆盖着陆方法:

@Override
public boolean touchDown(int screenX, int screenY, int pointer, int button){
return false;
}

因为我的阶段在多路复用器中是第一个,它应该首先处理输入,因为它返回 false。然后它应该移动到我的 UI 组,该组在各种小部件上有点击监听器。但是,永远不会处理 UI 组。如果我删除舞台上的 touchDown 方法,它会正常工作。

如何让 UI 组也处理输入?

我还在我的阶段类中添加了以下方法,看看它是否有帮助,但没有。

 @Override
public boolean keyDown(int keycode) {
// TODO Auto-generated method stub
return false;
}
@Override
public boolean keyUp(int keycode) {
// TODO Auto-generated method stub
return false;
}
@Override
public boolean keyTyped(char character) {
// TODO Auto-generated method stub
return false;
}

@Override
public boolean touchUp(int screenX, int screenY, int pointer, int button) {
// TODO Auto-generated method stub
return false;
}
@Override
public boolean touchDragged(int screenX, int screenY, int pointer) {
// TODO Auto-generated method stub
return false;
}
@Override
public boolean mouseMoved(int screenX, int screenY) {
// TODO Auto-generated method stub
return false;
}
@Override
public boolean scrolled(int amount) {
// TODO Auto-generated method stub
return false;
}

最佳答案

您正在覆盖舞台的事件处理功能。查看Stage.touchDown的源代码.

如果你真的想覆盖 touchDown,用 super 调用覆盖它,注意这可能会导致奇怪的行为,因为在 super 函数中,事件处理由 Actors 发生。

@Override
public boolean touchDown(int screenX, int screenY, int pointer, int button){
super.touchDown(screenX, screenY, pointer, button);
return false;
}

关于java - 多路复用器不处理第二个输入处理器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35303313/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com