gpt4 book ai didi

java - 如何在javafx中使用节点的宽度制作动画/过渡?

转载 作者:行者123 更新时间:2023-11-30 07:23:08 30 4
gpt4 key购买 nike

我想用节点的“宽度”制作动画。

在本例中,我的节点是“AnchorPane”。

我尝试在javafx中制作一个抽屉导航。

没有属性“width Property()”?

new Key Value (node.width Property (), 1, WEB_EASE)

node.widthProperty().getValue() 未找到

我的代码:

public void changeWidth(final Node node, double width) {
this.node = node;
this.timeline = TimelineBuilder.create()
.keyFrames(
new KeyFrame(Duration.millis(20),
new KeyValue( going here? , width, WEB_EASE)
)
)
.build();

setCycleDuration(Duration.seconds(5));
setDelay(Duration.seconds(0));
}

“不透明度”属性示例:

new KeyValue(node.opacityProperty(), 1, WEB_EASE)

我的类 ConfigAnimationViewPane:

public class ConfigAnimationViewPane extends Transition {
protected static final Interpolator WEB_EASE = Interpolator.EASE_BOTH;
protected AnchorPane node;
protected Timeline timeline;
private boolean oldCache = false;
private CacheHint oldCacheHint = CacheHint.DEFAULT;
private final boolean useCache = true;



/**
* Called when the animation is starting
*/
protected void starting() {
if (useCache) {
oldCache = node.isCache();
oldCacheHint = node.getCacheHint();
node.setCache(true);
node.setCacheHint(CacheHint.SPEED);
}
}

/**
* Called when the animation is stopping
*/
protected void stopping() {
if (useCache) {
node.setCache(oldCache);
node.setCacheHint(oldCacheHint);
}
}

@Override protected void interpolate(double d) {
timeline.playFrom(Duration.seconds(d));
timeline.stop();
}

}

这是小米 Controller :

将菜单移至左侧(神秘)

LeftTransition leftTransition = new LeftTransition();
leftTransition.OpenMenu(list1);
leftTransition.play();

在这里我想放置我的尺寸“AnchorPane”。(设置我的“anchorpane”的宽度)

 /*ViewPaneTransition paneTransition = new ViewPaneTransition();
paneTransition.CloseMenu(viewPane, width );
paneTransition.play();*/

最佳答案

这是 java 9 的一个工作示例。它会更改宽度和高度(如果不需要,只需删除高度线)

widthProperty 是只读的,因此您必须根据需要设置 maxWidth 或 minWidth 开关。时间轴上的延迟时长默认为0,无需设置,循环时长根据关键帧时长计算。

public void changeSize(final Pane pane, double width, double height) {
Duration cycleDuration = Duration.millis(500);
Timeline timeline = new Timeline(
new KeyFrame(cycleDuration,
new KeyValue(pane.maxWidthProperty(),width,Interpolator.EASE_BOTH)),
new KeyFrame(cycleDuration,
new KeyValue(pane.maxHeightProperty(),height,Interpolator.EASE_BOTH))
);

timeline.play();
timeline.setOnFinished(event->{
/* insert code here if you need */
});
}

关于java - 如何在javafx中使用节点的宽度制作动画/过渡?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37220743/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com