如何在重复出现的窗格中设置滚动背景?

时间:2019-04-10 13:14:49

标签: java javafx

我正在编写一个小视频游戏,在主菜单中,我想拥有游戏的标题以及所有标题,但是在背景中,我想拥有一个重复出现的滚动背景。像这样:

auto-scrolling example

尽管我的示例大致恢复了其初始状态,但它仍是我想要的。这不是正确的循环。

这是另一个示例:another auto-scrolling loop background

我正在使用窗格,上面添加了不同的元素,因此背景就是其中之一。

我已经想到要使用的是同一张图片的两个imageView,但它们互不相同,并逐渐对其进行切割以产生循环/重复错觉。

所描述的结果将是我上面已经提到的。

谢谢

1 个答案:

答案 0 :(得分:0)

我在写的纸牌游戏中做了类似的事情,该纸牌游戏在后台滚动纸牌。这可能不是您的确切做法,但是应该为您提供实现方法的思路。

//The containing transition.
SequentialTransition slideshow = new SequentialTransition();
//Set up my array of cards
ImageView[] slides = new ImageView[fileList.length];

for(int i = 0; i < slides.length; i++){
    //Populate my array and set up the translate transitions.
    slides[i] = new ImageView(new Image(fileList[i].getPath().substring(19)));
    slides[i].setTranslateX(slides[i].getImage().getWidth());
    //One after the other
    SequentialTransition seq = new SequentialTransition();
    //From right side to middle
    TranslateTransition peekIn = new TranslateTransition(Duration.millis(2000), slides[i]);
    //Pause in the middle
    PauseTransition stop = new PauseTransition(Duration.millis(2000));
    //From middle to left side.
    TranslateTransition peekOut = new TranslateTransition(Duration.millis(2000), slides[i]);
    //This sets up where the peeks start and finish.
    peekIn.setFromX(slides[i].getImage().getWidth());
    peekIn.setToX(0);

    peekOut.setFromX(0);
    peekOut.setToX(-1*(slides[i].getImage().getWidth()));
    //This is the order that these transitions occur.
    seq.getChildren().addAll(peekIn, stop, peekOut);
    slideshow.getChildren().add(seq);
}
//Previously created background container. (Happens to be a StackPane)
bgContainer.getChildren().addAll(slides);
//I want the Transition to play backwards as well.
slideshow.setAutoReverse(true);
//I want it to never stop
slideshow.setCycleCount(Animation.INDEFINITE);
//I start it.
slideshow.play();

因此,使用不同类型的过渡,我在标题屏幕的背景中创建了滚动卡的效果。您很可能希望结合使用TranslateTransitionSequentialTransition来获得想要的效果。过渡是非常有趣的类,您应该对其进行研究,看看它们是否是您想要的。