Javafx 2 如何确定某个节点上是否已经在运行转换?

Javafx 2 如何确定某个节点上是否已经在运行转换?,javafx-2,Javafx 2,如何确定节点上是否已经运行了转换-例如FadeTransition?注意:我自己没有尝试过与此相关的任何操作。这与其说是一个解决方案,不如说是一个草图。评论太长了,所以我在这里写提纲 在我看来,您可以创建一个与节点关联的布尔值(“transitionPlaying”),每次在节点上启动转换时,您都将其设置为true 然后,对于每个转换,在转换完成时定义一个行为: yourTransition.setOnFinished(new EventHandler<ActionEvent>(){

如何确定节点上是否已经运行了转换-例如
FadeTransition

注意:我自己没有尝试过与此相关的任何操作。这与其说是一个解决方案,不如说是一个草图。评论太长了,所以我在这里写提纲

在我看来,您可以创建一个与节点关联的布尔值(“transitionPlaying”),每次在节点上启动转换时,您都将其设置为true

然后,对于每个转换,在转换完成时定义一个行为:

yourTransition.setOnFinished(new EventHandler<ActionEvent>(){
    public void handle(ActionEvent AE){
        transitionPlaying = false; 
}
yourTransition.setOnFinished(新的EventHandler(){
公共无效句柄(ActionEvent AE){
转换播放=错误;
}
请注意,这仅仅回答了您最基本的问题-很难再写更多的内容,因为我不知道您为什么想知道转换是否完成(如果您想在转换完成后执行某些操作,则会打开一整罐蠕虫。如果正在播放转换,您可以将要运行的下一个转换添加到队列中,然后定义setonfinish,以便在转换完成时调用队列中的下一个转换。)

该解决方案有一个限制,即在任何时刻一个节点上最多只能播放一次转换

更新以查找节点上的所有转换是否已完成

您可以使用int而不是bool,对于开始的每个转换,您将计数器递增1,完成后将其递减1。这样,您就知道所有转换都是在计数器读取“0”时完成的。通过这种方式,我的解决方案解决了知道节点上的所有转换是否完成的问题。

您始终可以使用,因为转换扩展了对象。无需另一个变量,您只需:

FadeTransition fade = new FadeTransition()
fade.statusProperty().addListener(new ChangeListener<Status>() {

        @Override
        public void changed(ObservableValue<? extends Status> observableValue,
                        Status oldValue, Status newValue) {
                if(newValue==Status.RUNNING)
                    System.out.println("Animation is still running");

            }
        });
fade.play();
FadeTransition fade=新的FadeTransition()
fade.statusProperty().addListener(新的ChangeListener()){
@凌驾

更改公众假期(ObservalEvalue感谢您的帮助。我想分享我为我的特定问题最终选择的解决方案。其内容如下:我想在鼠标单击时淡出一个节点。当出现大量单击时,新的
FadeTransition
应仅在当前一个完成时启动,以防止闪烁或其他现象

我的方法可以在函数的第一行看到:

@FXML
public void chartMouseClicked(MouseEvent event){
    if (ft.getCurrentRate()!=0.0d) return;      
    ft.play();
}

在这种情况下,
ft
是类型为
FadeTransition
的私有字段,在“init”函数中实例化一次
在暂停或停止转换时返回
0.0
。我不需要暂停转换,所以这是我的方法-我只是检查值,然后让转换停止后再次播放。

很好的发现。仍然存在知道节点上的所有转换是否完成的问题。有一种方法,但可能是错误的ound overkill。创建一个扩展节点的自定义类。创建一个FXObservableList of Transitions。创建自定义方法以注册到节点的转换并将这些转换存储在列表中。以编程方式探测转换列表中的动画。状态