LibGDX-表上的InputListener边界

LibGDX-表上的InputListener边界,libgdx,tablelayout,Libgdx,Tablelayout,我已经在覆盖mouseMoved的表上设置了InputListener。我希望当鼠标在屏幕上的任何位置移动时接收输入,但现在它只在鼠标移动到表中的任何小部件上时接收输入(请参见屏幕截图中的红色框) font=新位图字体(); 样式=新标签。标签样式(字体,颜色。白色); xLabel=新标签(“x:”,样式); yLabel=新标签(“y:”,样式); xNum=新标签(“0”,样式); yNum=新标签(“0”,样式); 此.setFillParent(true); System.out.pr

我已经在覆盖mouseMoved的表上设置了InputListener。我希望当鼠标在屏幕上的任何位置移动时接收输入,但现在它只在鼠标移动到表中的任何小部件上时接收输入(请参见屏幕截图中的红色框)

font=新位图字体();
样式=新标签。标签样式(字体,颜色。白色);
xLabel=新标签(“x:”,样式);
yLabel=新标签(“y:”,样式);
xNum=新标签(“0”,样式);
yNum=新标签(“0”,样式);
此.setFillParent(true);
System.out.println(this.getWidth()+“,”+this.getHeight());
this.addListener(新的InputListener(){
@凌驾
公共布尔mouseMoved(InputEvent事件,浮点x,浮点y){
xNum.setText(String.valueOf(x));
yNum.setText(String.valueOf(y));
返回true;
}
});
这个。左()。上();
这个.add(xLabel).padLeft(5);
添加(xNum);
此行();
此.add(yLabel).padLeft(5);
这个。添加(yNum);
this.debug();

如果将InputListener绑定到小部件,则这是常规功能。当然它是绑定到小部件的,仅此而已。因此它与小部件的大小有关

如果您想收听所有事件,则需要编写
输入处理器
,并自行处理事件。 使用InputProcessor接口并将处理器添加到gdx

Gdx.input.setInputProcessor(yourProcessor);
该阶段已经是一个输入处理器,并向处于该位置的参与者触发所有事件。您可以使用一个阶段来进行良好的事件处理,例如,了解是否单击了某个互动程序或某个角色。但是如果你喜欢更复杂的东西,你可以创建自己的
输入处理器
。但是如果您愿意,您可以向舞台添加一个侦听器,并获取所有移动事件。这可能也是一个解决办法<代码>stage.addListener(listener)

  • 还可以查看侦听器和事件部分 请进一步澄清
  • 维基

  • 否则,调整表格大小以适应屏幕大小,您将获得鼠标的所有移动。但我不建议这样做。默认情况下,

    大多数libgdx
    参与者的句柄输入中都可以找到您需要知道的所有信息,
    没有。
    原因是: 在
    表的构造函数中
    setTouchable(Touchable.childrenOnly)<调用code>,它禁用此小部件的touchable,但为其子部件启用它。这就是为什么只通过表的小部件接收输入


    setTouchable(Touchable.enabled)解决了此问题

    ,但鼠标不在表外。表格是屏幕的大小,所以鼠标在表格的范围内。请不要链接到文档。我已经阅读了这些文档,因为这些文档对我的情况没有帮助,这就是我在这里提问的原因。记录表的大小,它似乎没有屏幕那么大,或者侦听器只是在小部件上检测到。我没有看到屏幕大小的任何大小,调试也没有在快照的边缘显示红色边框。如前所述,如果你听整个屏幕的运动,你会为它添加一个输入处理器。如果您仍然需要点击窗口小部件,请使用inputmultiplexer。没有指向文档的链接。我认为启用touchable不能解决您的问题。阅读@BennX的解决方案。将您的
    阶段设置为输入处理器,并在那里处理输入。如果你只想使用表上的输入,你可以很容易地忽略其他小部件上的输入(我认为禁用touchable就足够了)。我试过了。在我的情况下,这是正确的方法。既然这是解决方案,为什么会被否决?设置阶段来处理mouseMoved是一种方法,但对于我的情况来说并不正确。为什么栈上的每个人仅仅因为认为自己的答案是正确的就投票?看来你是对的。小部件通过deffault启用了可触摸功能,而不是一个表(据我所知)。我将编辑你的答案,以提供更多的细节,我可以删除我愚蠢的否决票。。。但也要注意BennX的回答。这应该是一个可能的解决方案,并可能在未来帮助你。另外,如果你已经准备好阅读文档,发布文档链接总是很好的,因为这个答案不仅对你有帮助,而且对每个有同样问题的人都有帮助!