平滑地改变一个JavaFX效果

是否有可能在JavaFX中顺利地改变效果? 我已经尝试了很多选择,但没有任何工作。

例如 – Java:

void effectChange(Node node) { // Node Effect = ColorAdjust (0.0, 0.0, 0.0, 0.0) KeyValue keyValue = new KeyValue(node.effectProperty(), new ColorAdjust(-0.8, 0.0, 0.0, 0.0)); KeyFrame keyFrame = new KeyFrame(Duration.seconds(2.0), keyValue); Timeline timeline = new Timeline(keyFrame); timeline.play(); } 

例如 – Kotlin:

 fun effectChange(node: Node) { // Node Effect = ColorAdjust (0.0, 0.0, 0.0, 0.0) val keyValue = KeyValue(node.effectProperty(), ColorAdjust(-0.8, 0.0, 0.0, 0.0)) val keyFrame = KeyFrame(Duration.seconds(2.0), keyValue) val timeline = Timeline(keyFrame) timeline.play() } 

你正在计时错误的财产。 而不是改变效果,你应该改变效果的属性。 看看下面的例子:

  Button btn = new Button("Say 'Hello World'"); ColorAdjust effect = new ColorAdjust(0.0, 0.0, 0.0, 0.0); btn.setEffect(effect); btn.setOnAction((ActionEvent event) -> { KeyValue keyValue = new KeyValue(effect.hueProperty(), -0.8); KeyFrame keyFrame = new KeyFrame(Duration.seconds(2.0), keyValue); Timeline timeline = new Timeline(keyFrame); timeline.play(); });