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
總結
以上是生活随笔為你收集整理的Java的新视差控件(JavaFX)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 怎样清理手机喇叭灰尘(怎么才能清理手机喇
- 下一篇: 夸克浏览器快捷键(夸克浏览器快捷工具)