libgdx:如何停止补赛?

libgdx:如何停止补赛?,libgdx,Libgdx,正如我在文章中看到的,您可以轻松地使用“停止”方法来停止事件传播,但这对“触地/触地”事件(事件未停止)不起作用。我还为“mousemove”事件测试了它,发现它对它有效。为什么?如何停止“触地/触地”事件 PS:libgdx版本:1.2.0, 我正在使用scene2d。来自: InputMultiplexer将把任何新事件传递给添加到其中的第一个InputProcessor如果该处理器从处理事件所调用的方法返回false,则表示事件未被处理,多路复用器将把事件交给链中的下一个处理器。通过这种机

正如我在文章中看到的,您可以轻松地使用“停止”方法来停止事件传播,但这对“触地/触地”事件(事件未停止)不起作用。我还为“mousemove”事件测试了它,发现它对它有效。为什么?如何停止“触地/触地”事件

PS:libgdx版本:1.2.0, 我正在使用scene2d。

来自:

InputMultiplexer
将把任何新事件传递给添加到其中的第一个
InputProcessor
如果该处理器从处理事件所调用的方法返回false,则表示事件未被处理,多路复用器将把事件交给链中的下一个处理器。通过这种机制,
MyUiInputProcessor
可以处理其一个小部件中的任何事件,并将任何其他事件传递给
MyGameInputProcessor

TL;DR:如果要阻止其传播,请从句柄函数返回
true


另外,您使用的是什么版本的LibGDX?我使用
1.2.0
touchUp()
方法返回一个
boolean
,从你的问题中取消了教程中的那一行。

对不起,忘了写这个了。我使用的是场景2d,所以我只有一个叫做stage的输入处理器。正如我从源代码中看到的,舞台代码是这样编写的,即停止在补赛事件中不起作用。当然,我可以用我的自定义逻辑来简化stage,因此停止将起作用,但我认为这是一种黑客行为。另外,关于你的答案:正如我所知,scene2d不会为每个Actor.addListener调用创建单独的输入处理器。它们都由1个输入处理器(阶段)处理。我说得对吗?嗨,弗拉德,你能解释一下你想达到什么目标吗?停下来是什么意思?嗨。我有一个按钮和一些家长演员。我正在为他们两人添加润色听众。在按钮的触碰侦听器中,我调用Event.stop方法()。但两个侦听器都被调用。例如,当我使用“mouseMoved”事件监听器时,stop方法按预期工作(将鼠标移到按钮上不会调用父级监听器)。我也读了一些源代码,我发现在Stage类中处理触碰和mouseMove事件的不同行为是不同的(mouseMoved在目标元素上使用fire方法,而touchUp不使用)。