JavaFx宽度动画转换与动画
我有一个类,它扩展了一个元素宽度的动画转换:JavaFx宽度动画转换与动画,java,javafx,Java,Javafx,我有一个类,它扩展了一个元素宽度的动画转换: public class Resize extends Transition { private double width; private double diff; private Region region; public ResizeWidth(Duration duration, Region region, double newWidth ) { setCycleDuration(dura
public class Resize extends Transition {
private double width;
private double diff;
private Region region;
public ResizeWidth(Duration duration, Region region, double newWidth ) {
setCycleDuration(duration);
this.region = region;
this.width = region.getWidth();
this.diff= newWidth - width;
}
@Override
protected void interpolate(double frac) {
region.setPrefWidth(width + (diff * frac));
}
}
但我认为,没有视觉差异的同一个动画是由动画完成的:
Animation animation = new Timeline(
new KeyFrame(Duration.seconds(2),
new KeyValue(field.prefWidthProperty(), 1))
animation.play();
那么区别是什么?哪种方法更好?如果两者都有效,请使用更适合您项目的方法。我将考虑的是项目流和可读性。<代码>时间线< /代码>可能比实现<代码>转换< /代码>更容易。这看起来很简单,但如果你看一下内置转换的实现,它们似乎都使用了不容易复制的内部API。只要尝试一下,我就会遇到一些问题,比如如何让转换与类(如
SequentialTransition
和paralleltition
)很好地配合。另外,转换
类似乎都适合使用节点
,而您需要一个子类:区域
。不知道这可能会造成多少麻烦。如果两者都有效,请使用更适合您项目的。我将考虑的是项目流和可读性。<代码>时间线< /代码>可能比实现<代码>转换< /代码>更容易。这看起来很简单,但如果你看一下内置转换的实现,它们似乎都使用了不容易复制的内部API。只要尝试一下,我就会遇到一些问题,比如如何让转换与类(如SequentialTransition
和paralleltition
)很好地配合。另外,转换
类似乎都适合使用节点
,而您需要一个子类:区域
。不知道那会造成多少麻烦。