JavaFX 如何确定 EventTarget 路径?
How does JavaFX determine EventTarget paths?
我目前正在尝试将 TUIO 触摸事件转换为 JavaFX 事件。这在大多数情况下都有效,但是当使用那些以编程方式创建的事件时,事件所采用的路径似乎与启用 Windows 7 本机触摸和禁用 TUIO 输入时所采用的路径不同。
更具体地说,来自 Windows 7 个触摸的触摸事件被正确发送到场景中显示的矩形,但自定义触摸事件被发送到场景。
任何人都可以 explain/advise 了解 JavaFX 在使用 TouchEvent.fireEvent(..) 触发时如何知道将 TouchEvent 发送到哪里?
在Event.fireEvent(target, event)
中,target
是最终的(最里面的)目标。如果您将 Scene 作为目标传递,则事件将不会下降到比 Scene 更深的位置。如果您希望能够在那里处理事件,则需要在 Rectangle 上触发事件。您可以使用 JFXtras 的 NodeUtil.getNode 方法在相对于场景的给定位置找到节点:
Node target = NodeUtil.getNode(scene.getRoot(), sceneX, sceneY, Node.class);
Event.fireEvent(target, event);
我目前正在尝试将 TUIO 触摸事件转换为 JavaFX 事件。这在大多数情况下都有效,但是当使用那些以编程方式创建的事件时,事件所采用的路径似乎与启用 Windows 7 本机触摸和禁用 TUIO 输入时所采用的路径不同。
更具体地说,来自 Windows 7 个触摸的触摸事件被正确发送到场景中显示的矩形,但自定义触摸事件被发送到场景。
任何人都可以 explain/advise 了解 JavaFX 在使用 TouchEvent.fireEvent(..) 触发时如何知道将 TouchEvent 发送到哪里?
在Event.fireEvent(target, event)
中,target
是最终的(最里面的)目标。如果您将 Scene 作为目标传递,则事件将不会下降到比 Scene 更深的位置。如果您希望能够在那里处理事件,则需要在 Rectangle 上触发事件。您可以使用 JFXtras 的 NodeUtil.getNode 方法在相对于场景的给定位置找到节点:
Node target = NodeUtil.getNode(scene.getRoot(), sceneX, sceneY, Node.class);
Event.fireEvent(target, event);