首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >JavaFX: Delay TranslateTransition

JavaFX: Delay TranslateTransition
EN

Stack Overflow用户
提问于 2014-03-16 10:31:44
回答 1查看 1.2K关注 0票数 0

我在javaFX中创建了一些节点。我需要用TranslateTransitionPane的某个点到某个点之间转换每个节点的动画。但我需要让每个节点使用不同的起点独立移动。如何实现这一点?我的意思是在javaFX有没有像Thread.pause这样的东西。我尝试使用如下代码中的粗略方法:

代码语言:javascript
运行
复制
    public void mouseRespon(final double x, final double y){
    animasi.pause(); 
    thread = new Thread(
            new Runnable() {                    
                @Override
                public void run() {
                    int i = 0; 
                    while(threadStatus && i < allList.size()){
                        final int j = i;
                        Platform.runLater(new Runnable() {
                            @Override
                            public void run() {
                                DynamicsText text = allList.get(j); 
                                TranslateTransition transition = new TranslateTransition();
                                transition.setNode(text); 
                                transition.setFromX(text.getTranslateX()); 
                                transition.setFromY(text.getTranslateY());
                                text.setDestinyOffset(x, y);
                                text.initCurrentOffSet();
                                double destX = text.getPotitionX();
                                double destY = text.getPotitonY(); 
                                transition.setToX(destX);
                                transition.setToY(destY);
                                transition.setDuration(Duration.seconds(1));
                                transition.setAutoReverse(false); 
                                transition.setCycleCount(1);
                                transition.play();
                            }
                        });
                        try{
                            Thread.sleep(25);
                        }catch(Exception e){}
                        i++; 
                    }
                }
            });
    thread.start();
    animasi.play();
}

但我认为这不是一个好的方法。实际上,当我运行该代码片段时,会导致程序崩溃(有时)。

EN

回答 1

Stack Overflow用户

发布于 2014-03-16 22:37:11

创建一个ParallelTransition

对于要移动的每个部分,创建一个SequentialTransition、一个PauseTransitionTranslateTransition。每个片段的PauseTransitions应逐渐增大,例如0、25ms、50ms、75ms等。将PauseTransitionTranslateTransition添加到SequentialTransition。将每个SequentialTransition添加到ParallelTransition

然后播放ParallelTransition

不需要创建任何Thread或与Platform.runLater(...)打交道。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22432289

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档