Animation 是否可以将音量转换到两侧?

Animation 是否可以将音量转换到两侧?,animation,javafx,java-2d,Animation,Javafx,Java 2d,我想知道是否有一种方法可以从右侧或左侧,甚至从底部的顶部进行FadeTransition,类似于下面的示例: 使用设置为线性渐变的文本填充设置标签样式,并更改时间线中线性渐变的停止点 下面是一个基本示例(单击“淡入淡出标签”以查看动画)。类似的方法也适用于淡出 import javafx.animation.KeyFrame; import javafx.animation.KeyValue; import javafx.animation.Timeline; import javafx.app

我想知道是否有一种方法可以从右侧或左侧,甚至从底部的顶部进行FadeTransition,类似于下面的示例:


使用设置为线性渐变的文本填充设置标签样式,并更改时间线中线性渐变的停止点

下面是一个基本示例(单击“淡入淡出标签”以查看动画)。类似的方法也适用于淡出

import javafx.animation.KeyFrame;
import javafx.animation.KeyValue;
import javafx.animation.Timeline;
import javafx.application.Application;
import javafx.beans.binding.Bindings;
import javafx.beans.property.DoubleProperty;
import javafx.beans.property.SimpleDoubleProperty;
import javafx.scene.Scene;
import javafx.scene.control.Label;
import javafx.scene.layout.HBox;
import javafx.stage.Stage;
import javafx.util.Duration;

public class TextFade extends Application {

    @Override
    public void start(Stage primaryStage) {
        Label label = new Label("Fading label:");
        Label fadingLabel = new Label("text fades in and out");

        DoubleProperty startFade = new SimpleDoubleProperty(0);
        DoubleProperty endFade = new SimpleDoubleProperty(0);
        fadingLabel.styleProperty().bind(Bindings.createStringBinding(() -> String.format(
                "-fx-text-fill: linear-gradient(to right, -fx-text-background-color 0%%, -fx-text-background-color %f%%, transparent %f%%, transparent 100%%);",
                startFade.get()*100, endFade.get()*100
        ), startFade, endFade));


        HBox root = new HBox(2, label, fadingLabel);
        Timeline timeline = new Timeline(
                new KeyFrame(Duration.ZERO, new KeyValue(startFade, 0), new KeyValue(endFade, 0)),
                new KeyFrame(Duration.seconds(1.0/3.0), new KeyValue(startFade, 0)),
                new KeyFrame(Duration.seconds(2.0/3.0), new KeyValue(endFade, 1)),
                new KeyFrame(Duration.seconds(1), new KeyValue(startFade, 1)));

        label.setOnMouseClicked(e -> timeline.play());

        Scene scene = new Scene(root, 400, 400);
        primaryStage.setScene(scene);
        primaryStage.show();
    }

    public static void main(String[] args) {
        launch(args);
    }
}

是的。尝试将用于构建文本的中的示例与使用线性渐变调整文本填充的另一个动画(另一个
过渡
时间线
)相结合。您可以将它们组合成一个动画,或将两者放置在
并行转换中。如果您在执行过程中遇到问题,请发布一个具体的问题。非常感谢您,我们会尝试的!您甚至不需要设置文本内容本身的动画;只是渐变可能会起作用。刚刚收到此错误警告:CSS错误解析“*{-fx文本填充:线性渐变(向右,-fx文本背景色0%,-fx文本背景色0000000%,透明0000000%,透明100%);}:在[1101]解析“-fx文本填充”时应为“”在将其复制到eclipse中时oxygen@Roku最好的猜测是数字格式使用的是您的语言环境(例如,十进制分隔符是
),但CSS解析器希望数字格式为en-us语言环境。尝试连接字符串(我承认这有点难看),而不是使用
String.format()
,看看它是否能解决问题。非常抱歉,我有一些个人问题,但似乎要加入String.format()Locale.US,解决了css问题,效果非常好!