libGDX 反向actor事件处理
libGDX reverse actor eventHandling
我正在尝试在 libGDX 中创建一个通用的选项卡小部件。它包含一个按钮栏和一个窗格栏以及一个窗格视图。
假设标签小部件与屏幕一样大,并且我们有 3 个标签。按钮栏占据屏幕的顶部,窗格位于底部。 paneView 是一个用于事件处理的 WidgetGroup,它与 tabwidget 减去 buttonBar 一样大。
一切正常,直到我添加一个滚动窗格作为选项卡小部件。由于此 scrollPane 调用:
event.stop();
不调用后续事件。
由于事件 "bubble" 通过 actor 向上,最低级别的 actor 首先调用其 parents 和向上的兄弟姐妹的事件处理程序进行处理。这意味着滚动窗格总是在 tabwidget 之前处理。
有没有办法插入输入监听器的顺序?是否先处理选项卡输入,然后再处理滚动窗格输入?还是我必须重新实现滚动窗格处理程序才能解决此问题?
我认为你想要实现这个的方式是不可能的 - 演员怎么知道你正在表演的 fling 手势 是针对哪个?
我想到的解决方案是
- 创建新阶段作为输入处理器(如果它将是第二个输入处理器,您将需要 InputMultiplexer)
- 实施GestureDetector and then detect horizontal swipes and react with moving group - read this tutorial to get more information
在我看来,修改 libgdx 源通常不是一个好主意,但你当然可以这样做(通过从 Github 下载 LibGDX 并将其作为项目导入,你将可以访问所有资源)尽管在这种情况下绝对没有必要。
我正在尝试在 libGDX 中创建一个通用的选项卡小部件。它包含一个按钮栏和一个窗格栏以及一个窗格视图。
假设标签小部件与屏幕一样大,并且我们有 3 个标签。按钮栏占据屏幕的顶部,窗格位于底部。 paneView 是一个用于事件处理的 WidgetGroup,它与 tabwidget 减去 buttonBar 一样大。
一切正常,直到我添加一个滚动窗格作为选项卡小部件。由于此 scrollPane 调用:
event.stop();
不调用后续事件。
由于事件 "bubble" 通过 actor 向上,最低级别的 actor 首先调用其 parents 和向上的兄弟姐妹的事件处理程序进行处理。这意味着滚动窗格总是在 tabwidget 之前处理。
有没有办法插入输入监听器的顺序?是否先处理选项卡输入,然后再处理滚动窗格输入?还是我必须重新实现滚动窗格处理程序才能解决此问题?
我认为你想要实现这个的方式是不可能的 - 演员怎么知道你正在表演的 fling 手势 是针对哪个?
我想到的解决方案是
- 创建新阶段作为输入处理器(如果它将是第二个输入处理器,您将需要 InputMultiplexer)
- 实施GestureDetector and then detect horizontal swipes and react with moving group - read this tutorial to get more information
在我看来,修改 libgdx 源通常不是一个好主意,但你当然可以这样做(通过从 Github 下载 LibGDX 并将其作为项目导入,你将可以访问所有资源)尽管在这种情况下绝对没有必要。