我正在使用一台 Macbook,它有一个多点触控板。然后我用一个简单的场景和一个称为椭圆的椭圆来编写一个多点触控应用程序。我只有以下方法。当我用触控板在椭圆上执行两指操作时,缩放和旋转事件会自动触发。
oval.setOnZoom(new EventHandler<ZoomEvent>() {
@Override public void handle(ZoomEvent event) {
oval.setScaleX(oval.getScaleX() * event.getZoomFactor());
oval.setScaleY(oval.getScaleY() * event.getZoomFactor());
log("Ellipse: Zoom event" +
", inertia: " + event.isInertia() +
", direct: " + event.isDirect());
event.consume();
}
});
oval.setOnRotate(new EventHandler<RotateEvent>() {
@Override public void handle(RotateEvent event) {
oval.setRotate(oval.getRotate() + event.getAngle());
log("Ellipse: Rotate event" +
", inertia: " + event.isInertia() +
", direct: " + event.isDirect());
event.consume();
}
});
但是,我随后编写了另一个 JavaFX 程序来自己生成 TouchEvent(从连接到具有 Java 的 ManyMice 库的单台计算机的多个鼠标。我将多个鼠标事件转换为 TouchEvent)。UI 在空场景上再次具有相同的椭圆形。这一次,当我使用两只鼠标平移和旋转椭圆时,什么都没有发生。
然后我测试了椭圆形.SetOnTouchPressed 和椭圆形.SetOnTouchReleased 以查看椭圆形是否真的收到了触摸事件。是的!!确实如此!所以这意味着椭圆形接收到触摸事件,但这些“人工”触摸事件并不会像 Macbook 触控板那样自动生成手势事件。
我是否需要编写自己的逻辑来从 TouchEvents 生成手势事件,或者是否存在一些方法可以自动发生这种情况?