我正在编写一个小视频游戏,在主菜单中,我想拥有游戏的标题以及所有标题,但是在背景中,我想拥有一个重复出现的滚动背景。像这样:
尽管我的示例大致恢复了其初始状态,但它仍是我想要的。这不是正确的循环。
这是另一个示例:another auto-scrolling loop background
我正在使用窗格,上面添加了不同的元素,因此背景就是其中之一。
我已经想到要使用的是同一张图片的两个imageView,但它们互不相同,并逐渐对其进行切割以产生循环/重复错觉。
所描述的结果将是我上面已经提到的。
谢谢
答案 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();
因此,使用不同类型的过渡,我在标题屏幕的背景中创建了滚动卡的效果。您很可能希望结合使用TranslateTransition
和SequentialTransition
来获得想要的效果。过渡是非常有趣的类,您应该对其进行研究,看看它们是否是您想要的。