Libgdx Scene2d:表格上的事件监听器

3

我想知道如何在表格上检测触摸事件。虽然我已经尝试使用inputlistener,但它只会给我元素上的触摸。但是我希望可以在整个表格上检测到触摸。简而言之,我希望将我的表格转换为按钮。


如果您期望提供Java代码,则应始终将Java作为标签添加,以便进行Java代码高亮显示。 - Madmenyo
1个回答

10
您可以向舞台上的任何演员添加侦听器。在您的情况下,我建议使用 ClickListener。您可以像下面一样将 ClickListener 添加为“匿名类”。覆盖其 clicked 方法,并使用您的逻辑来摆脱对 .super 的调用,因为基本方法什么也不做。您可以访问提供的 InputEvent 中的特定详细信息,例如按下哪个按钮。
    Table table = new Table();
    //Might just be this line to have the table interact.
    table.setTouchable(Touchable.enabled); 
    t.addListener(new ClickListener(){
        @Override
        public void clicked(InputEvent event, float x, float y) {
            System.out.println("I got clicked!");
        }
    });

当然,为了点击表格,您需要将其扩展。如果您无法单击该表格,则应运行table.debug()并确保在屏幕上看到表格边界,然后在其中单击。


再次感谢!我完全按照您的方法操作了。实际上,我发现您必须设置一个布尔值,但新问题是这个特定的表格在分割窗格中。当我滚动窗格时,触摸会被激活。所以现在让我找到解决方案。 - uday
你可以尝试在Listener中重写@touchUp,而不是使用clicked。但这可能会在释放时触发表格点击事件。因此,当你拖动时,你需要从表格中删除监听器。首先使用table.getListeners获取所有监听器,然后遍历这些监听器并将它们从表格中移除。但是,当你停止滚动时,你必须再次添加它们。 - Madmenyo
抱歉,该表格位于滚动窗格中。 - uday
虽然我还没有尝试过这种方法,但如果我发现它成功与否,我会回复你的。 - uday

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接