- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在JavaFX中,我试图实现一条线(更确切地说是多段线)的平滑动画,看起来信号正在穿过该线。线路是用某种颜色(例如黑色)着色并不断用新颜色(例如红色)重新着色。所以开始时线是黑色的,结束时线是红色的。
我怎样才能实现这个目标?示例如下图所示。
请注意方向很重要。
我尝试将 StrokeTransition 和 PathTransition 结合起来,但不知道如何正确执行此操作:
PathTransition pt = new PathTransition(Duration.seconds(5), MWFsignal);
StrokeTransition st = new StrokeTransition(Duration.ZERO);
SequentialTransition seq = new SequentialTransition(pt, st);
seq.play();
我的逻辑是这样的:首先穿过折线,当你旅行时,在您到目前为止已经走过的部分应用笔画过渡。
最佳答案
您可以创建一个 DoubleProperty
来表示“信号”的位置,其值为 0 到 1 之间的值。
然后将线条的描边
绑定(bind)到该属性,生成一个LinearGradient
,该渐变在该位置的值处从红色变为黑色。然后,您可以使用任何标准动画为信号位置设置动画:
DoubleProperty signalPosition = new SimpleDoubleProperty(0);
line.strokeProperty().bind(Bindings.createObjectBinding(() ->
new LinearGradient(0, 0, 1, 0, true, CycleMethod.NO_CYCLE,
new Stop(0, Color.CORAL),
new Stop(signalPosition.get(), Color.CORAL),
new Stop(signalPosition.get(), Color.BLACK),
new Stop(1, Color.BLACK)),
signalPosition));
Timeline animation = new Timeline(
new KeyFrame(Duration.ZERO, new KeyValue(signalPosition, 0)),
new KeyFrame(Duration.seconds(5), new KeyValue(signalPosition, 1))
);
这是一个完整的示例:
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.layout.Pane;
import javafx.scene.paint.Color;
import javafx.scene.paint.CycleMethod;
import javafx.scene.paint.LinearGradient;
import javafx.scene.paint.Stop;
import javafx.scene.shape.Polyline;
import javafx.stage.Stage;
import javafx.util.Duration;
public class AnimatedPolylineStroke extends Application {
@Override
public void start(Stage primaryStage) throws Exception {
Pane root = new Pane();
Polyline line = new Polyline(new double[] {
100.0, 300.0,
300.0, 100.0,
500.0, 300.0
});
line.setStrokeWidth(4);
root.getChildren().add(line);
DoubleProperty signalPosition = new SimpleDoubleProperty(0);
line.strokeProperty().bind(Bindings.createObjectBinding(() ->
new LinearGradient(0, 0, 1, 0, true, CycleMethod.NO_CYCLE,
new Stop(0, Color.CORAL),
new Stop(signalPosition.get(), Color.CORAL),
new Stop(signalPosition.get(), Color.BLACK),
new Stop(1, Color.BLACK)),
signalPosition));
Timeline animation = new Timeline(
new KeyFrame(Duration.ZERO, new KeyValue(signalPosition, 0)),
new KeyFrame(Duration.seconds(5), new KeyValue(signalPosition, 1))
);
root.setOnMouseClicked(e -> animation.playFromStart());
Scene scene = new Scene(root, 600, 600);
primaryStage.setScene(scene);
primaryStage.show();
animation.play();
}
public static void main(String[] args) {
Application.launch(args);
}
}
关于java - 如何对一条线进行动画着色,就像 JavaFX 中通过的信号一样,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61710980/
如何迭代(一行)分割函数给我的每个类? 我试过这个: 编辑(抱歉) $("p").attr("class").split(' ').each (function (i,n){alert(n)}
我有一条垂直线和一条水平线,当我动态调整我的 Canvas 父级时,我想调整它们的大小。 (地标) 我希望水平线始终距 Canvas 的左右边界 25 处,距底部边界 13 处。 垂直线也是如此,距上
我有一个 y 变量,我试图在图形的顶部和底部针对两个相关的 x 轴绘制它(例如 y="立方体中的事物数",x1="立方体的边长", x2="立方体的体积")。我在 numpy 数组中有 y、x1、x2
我想画一条简单的水平线,并在这条线 flex 的地方制作动画。我有这个动画的视频。你能给我一些建议如何开始以及我必须使用哪个 js/css 吗? 都是关于矩形底部的线: http://www.stop
我是一名优秀的程序员,十分优秀!