刚进入JavaFX,非常喜欢它,但我不太确定如何为AnchorPane.leftAnchor属性设置动画。
目前,我正在使用时间轴来动画Node.translateXProperty(),这给了我一个很好的平滑动画。但是,虽然我的节点似乎移动了,但似乎在接收鼠标点击方面,它还没有移动。实际上,我想要做的是为节点的AnchorPane.leftAnchor静态属性设置动画,这可能吗?
理想情况下,我希望保留我的时间轴,因为它也在做其他事情,所以..
1)是否可以像设置这样的常规属性一样动画静态属性:
new KeyFrame(Duration.ZERO, new KeyValue(node.translateXProperty(), from, Interpolator.EASE_BOTH))
2)如果不可能,我可以翻译鼠标点击以匹配翻译位置吗?
干杯
加里
答案 0 :(得分:3)
如果您为translateX
和translateY
属性设置动画,则MouseEvent.getX()
和MouseEvent.getY()
检索到的动画节点上的鼠标坐标将为该节点的坐标系本地:即它们不会受到节点本身位置变化的影响。如果您为layoutX
和layoutY
属性设置动画(如果您为AnchorPane.leftAnchor
"属性"设置动画,则可以执行此操作。)
您可以通过调用Node.localToParent(...)
将节点的本地坐标系中的点转换为其父坐标系。
请注意Node
上有其他类似的方法,例如localToScene
和localToScreen
,以及MouseEvent
上的一些便捷方法:getSceneX()
,{ {1}},同样适用于getScreenX()
。
要回答你的实际问题(虽然我怀疑它是多余的,也许......),你可以创建一个新的属性和#34; animate"那个财产。然后添加一个监听器,并在它发生变化时更新y
。此SSCCE演示了这种技术(尽管您可以使用TranslateTransition
代替并以完全相同的方式获取鼠标坐标。)
leftAnchor