我正在使用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(来自连接到具有ManyMice库的单个计算机的多个鼠标用于java。我将多个鼠标事件转换为TouchEvent)。 UI在空场景中再次具有相同的椭圆形。这次,当我用两只老鼠平移和旋转椭圆时,没有任何事情发生。
然后我用oval.SetOnTouchPressed和oval.SetOnTouchReleased测试椭圆是否真的收到了触摸事件。是的!!它确实!所以这意味着椭圆接收触摸事件,但这些“人为”触摸事件不会自动生成像Macbook Trackpad这样的手势事件。
我是否需要编写自己的逻辑来从TouchEvents生成Gesture事件,或者存在一些允许这种情况自动发生的方法?