2017-07-08 15 views
1

JavaFXでエフェクトをスムーズに変更できますか? 私はたくさんのオプションを試しましたが、何も機能しません。例えばJavaFXエフェクトをスムーズに変更する

- ジャワ:たとえば

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

答えて

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

関連する問題