Java的新视差控件(JavaFX)

介绍

视差是一种视觉效果,您可以组合以不同速度移动的两个分层图像以获得深度感。

想想一下,当您在道路上行驶时,您会看到附近的树木在快速移动,而距离较远的树木将沿相同的方向移动,但速度较慢,结果是您感觉到树木在快速移动与您和其他人更亲近。

如果您是电子游戏迷,那么您肯定已经看过这种效果:将两张图像放在另一张图像上,背景移动得较慢,而前景(可能是玩家的头像移动得更快)。

这是视频游戏世界中经常使用的技巧。 它开始使用很久以前,例如《超级马里奥》电子游戏系列。

超级马里奥游戏使用视差效果

此效果已在用户界面区域中采用,您可以在网站区域以及某些应用程序中看到该效果。

网站上的视差–来源:https://dribbble.com/shots/1378010–GIF-Parallax-Building-animation

我的目标是以控件的形式将其引入JavaFX,您可以在其中通过简单的API添加视差效果。

ListView中的视差

我的主要目标是将其带到ListView,即具有一个类似于ListView的API的控件,您可以在其中设置背景图像和项目列表,就像在JavaFX ListView中一样。

实现ParallaxListView

若要产生视差效果,ListView中的项目(即单元格)需要以比背景图像更快的速率滚动。

这个新控件将使用具有透明背景的JavaFX ListView,该背景位于背景图像的前面。

第一个挑战是JavaFX ListView的滚动是通过跳转完成的,也就是说,当您执行滚动操作时,位置将从原始位置跳转到结束位置,而无需经过中间位置值。 这将破坏效果,因为没有像现实世界中那样的运动,只有一组离散的位置。 在现实世界中,前景中的对象通过翻译动画移动得更快,请记住,这是关于模仿现实世界中的现象(如我之前给出的驾驶示例),以提供深度感。

因此,要实现此目的,我必须实现自己的ListView滚动以及背景滚动,而背景滚动则通过一组位置设置动画。

ParallaxListView示例

从哪里获得

现在您可以在这里获取它: https : //github.com/dukke/parallax-list-view

我决定坚持使用JavaFX 8,因为Java 9仍然相对较新,并且有些人可能尚未迁移。 这样,Java 8和Java 9程序就可以使用它。

我使用的是私有API,即VirtualFlow,但是在JavaFX 9中已变成公共API,因此可以轻松迁移ParallaxListView代码。

测试文件夹包含有关如何使用控件的示例。 您必须滚动鼠标滚轮才能看到效果。

结论和进一步发展

ParallaxListView可以给您的应用程序一个很好的联系,增加一些天赋,但是不要过度使用此效果。

在接下来的几天里,我计划添加以下内容:

  • 添加对滚动条滚动的支持。
  • 添加API以更改背景图像相对于前景的高度
  • 添加指定ParallaxListView方向的功能:水平或垂直
  • 添加文档页面
  • 还提供一个通用控件,使您可以指定背景和任意可滚动的前景控件。

翻译自: https://www.javacodegeeks.com/2018/03/new-parallax-control-for-java-javafx.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值