2017-07-08 85 views
1

是否可以顺利改变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(); 
} 

例如 - 科特林:

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() 
} 

回答

1

您timelining错误的性质。而不是改变效果,你应该改变效果的属性。看看下面的例子中:

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(); 
    }); 
+0

非常感谢,现在一切正常 你能不能也说如何使它从一开始就重复? //开始-1.0 //结束1.0 //..0.9,1.0,-1.0,-0.9 .. – Nourepide

+0

@Nourepide'timeline.setCycleCount(Timeline.INDEFINITE);'你可能还想'timeline.setAutoReverse(真);' –

+0

谢谢你,你帮了我很多忙) – Nourepide