我试图通过使用节点的半径r及其旋转角度将JavaFX QuadCurve的startXProperty绑定到节点的旋转。我的想法是,如果我也使用Y属性,也可以将曲线的自身“附加”到旋转对象的末端。
现在,我知道可以使用x = r × cos( θ )
找到x值。
但是我很难在Bindings数学中表示这一点:
curve.startXProperty().bind(getRod().rotateProperty().//Something);
我正在尝试将.multiply()
,.divide()
,.add()
和.subtract()
组合在一起。并不是绑定具有我可以轻松使用的.cos()方法。
如果有人可以帮助我解决这个难题,我会很乐意的。
答案 0 :(得分:3)
add
,multiply
等方法只是为了方便。
幸运的是,Bindings
类使您可以tp指定可用作绑定参数的任意绑定:
DoubleBinding binding = Bindings.createDoubleBinding(
() -> Math.cos(Math.toRadians(getRod().getRotate())) * radiusProperty.get(),
getRod().rotateProperty(),
radiusProperty);
curve.startXProperty().bind(binding);
但是,最好使用侦听器来监听rotate
属性,将localToParent
用作转换并为提供的结果设置curve
的属性。