2017-03-03 54 views
0

目前,我有一个图像列表,其中显示了一段时间的时间线。但是,我希望在每个图像显示之后出现一个小暂停?有没有办法实现这种行为?Javafx在每个时间轴“周期”之间暂停

这里是我到目前为止使用代码:

ImageView imView = new ImageView(); 

Duration timeBetweenImages = Duration.millis(10000); 
Timeline timeline = new Timeline(); 

for (int i = 0; i < imageList.size(); i++) { 
    Image image = imageList.get(i); 
    Duration frameTime = timeBetweenImages.multiply(i); 
    KeyFrame frame = new KeyFrame(frameTime, e -> imView.setImage(image)); 
    timeline.getKeyFrames().add(frame); 
} 

timeline.play(); 

至于现在每个图象被显示10秒。我希望在每10秒钟之后有1秒暂停,而不显示图像。

回答

1
ImageView imView = new ImageView(); 

Duration timeBetweenImages = Duration.seconds(11); 
Duration pauseTime = Duration.seconds(1); 
Timeline timeline = new Timeline(); 

for (int i = 0; i < imageList.size(); i++) { 
    Image image = imageList.get(i); 
    Duration frameTime = timeBetweenImages.multiply(i); 
    KeyFrame frame = new KeyFrame(frameTime, e -> imView.setImage(image)); 
    timeline.getKeyFrames().add(frame); 

    Duration pauseFrameTime = timeBetweenImages.multiply(i+1).subtract(pauseTime); 
    KeyFrame pauseFrame = new KeyFrame(pauseFrameTime, e -> imView.setImage(null)); 
    timeline.getKeyFrames().add(pauseFrame); 
} 

timeline.play(); 
+0

你知道是否有可能将这与转变相结合吗?我添加了一个RotationTransition到ImageView需要6000毫秒,但遗憾的是时间关闭:(我应该这样工作:显示图像并将其旋转360度,然后暂停1秒,并与下一个图像相同。 –

+0

而不是使用一个'RotateTransition',只是添加关键帧到'Timeline',它使用'new KeyValue(imView.rotateProperty,value)'。 –

+0

它不适用于'RotateTransition'吗?因为后来我需要使用' ParallelTransition'为了同时执行多个转换 –