我在javaFX中创建了一些节点。我需要用TranslateTransition
在Pane
的某个点到某个点之间转换每个节点的动画。但我需要让每个节点使用不同的起点独立移动。如何实现这一点?我的意思是在javaFX有没有像Thread.pause这样的东西。我尝试使用如下代码中的粗略方法:
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();
}
但我认为这不是一个好的方法。实际上,当我运行该代码片段时,会导致程序崩溃(有时)。
发布于 2014-03-16 22:37:11
创建一个ParallelTransition
。
对于要移动的每个部分,创建一个SequentialTransition
、一个PauseTransition
和TranslateTransition
。每个片段的PauseTransition
s应逐渐增大,例如0、25ms、50ms、75ms等。将PauseTransition
和TranslateTransition
添加到SequentialTransition
。将每个SequentialTransition
添加到ParallelTransition
。
然后播放ParallelTransition
。
不需要创建任何Thread
或与Platform.runLater(...)
打交道。
https://stackoverflow.com/questions/22432289
复制相似问题