JavaFX中基于表達式的PathTransitions

在JavaFX中,您可以使用PathTransition對象為路徑上的節點設置動畫。 PathTransitions使用Shape對象描述它們需要沿其動畫的路徑。 JavaFX提供了各種類型的形狀(例如,多邊形,圓形,多邊形,路徑)。 路徑形狀很有趣,因為它允許您使用稱為PathElement的各種移動來創建復雜的形狀。 一些路徑元素是ArcTo,CubicCurveTo,HLineTo,LineTo,MoveTo,QuadCurveTo,VLineTo。 他們的名字暗示著他們在做什么。

盡管PathElemetns非常適合描述復雜路徑,但我發現我寧愿使用數學表達式來描述我的路徑。 在數學課上使用圖形的所有歲月影響了我的思維方式。 二次和三角表達式使它們具有溫暖和舒適的感覺。 因此,我試圖創建使用數學表達式描述的PathTransitions。 如果有人希望達成相同的目標,我會在這篇文章中描述我的解決方案。

為此,首先需要解決數學表達式的方法,例如x * sin(x)或x ^ 2/45或(x ^ 2)/ sin(x-2)或其他方法可以想像。 為此,我很幸運地偶然發現了Lawrence Dol的Software Monkey網站。 Lawrence創建了一個名為MathEval的超輕量Java類 ,該類可評估數學表達式。 該類只有31KB,非常易于使用。 我使用MathEval繪制給定表達式的點。

JavaFx類Polyline用于存儲MathEval求解的標繪點,并將它們轉換為PathTransition可以將其用作輸入的Shape對象。

我最終創建的類稱為ExpressionTransitionMaker-抱歉,沒有Javadoc,但是您可以在此處找到源代碼。 該類應該非常易于使用。 它有兩個主要方法值得一提。 第一個是:

public void addExpressionEntry(double start, double end, double poll, GraphType type, String expression) throws IllegalArgumentException;

此方法用于添加表達式條目,該表達式條目由具有支持信息的表達式組成,例如圖表上的開始和結束位置,輪詢間隔和GraphType。 ExpressionTransitionMaker可以制作此GraphType枚舉描述的三種不同類型的圖:

public enum GraphType {vertical("y"), horizontal("x"), polar("a");private String var;GraphType(String var) {this.var = var;}public String getVar() {return var;}}

每個表達式條目都需要一個表達式。 對于水平圖,表達式的形式必須為f(x); g(y)為垂直; r(a)代表極坐標。 也就是說,水平圖需要一個表達式,其中唯一變量是字母“ x”,垂直圖需要一個表達式,其中唯一變量是字母“ y”,極坐標圖需要一個表達式,唯一的變量variable是字母“ a”,其中“ a”表示弧度的角度。 可以添加多個表達式條目。

顧名思義,水平圖和垂直圖分別用于分別向左和向右和向上和向下移動的圖形。 極坐標圖適用于沿圓形或螺旋形路徑移動的圖形。 如果給定負的輪詢值以及適當的起點和終點,則這三個方向都可以朝相反的方向發展。

值得一提的第二種方法是:

public SequentialTransition getSequentialTransition();

因為可以在ExpressionTransitionMaker中添加多個表達式,所以SequentialTransition對象用于播放ExpressionTransitionMaker可以創建的所有PathTransition。 返回的SequentialTransition填充有多個PathTransition,每個添加的表達式一個。 SequentialTransition將按順序播放其所有過渡。

就是這樣。 ExpressionTransitionMaker中還有一個或兩個其他公共方法,用戶可能會發現它們很方便,但為簡潔起見而被忽略。 我創建了一個簡單的小應用程序,用于測試ExpressionTransitionMaker,可以在此處找到。 該應用程序可以在瀏覽器上播放,它允許您輸入多個表達式,這些表達式用于使屏幕上的圖像動起來。

如果您有任何反饋意見希望閱讀。

參考:來自我們W4G合作伙伴 Jose Martinez的 JavaFX中基于表達式的PathTransitions


翻譯自: https://www.javacodegeeks.com/2012/09/expression-based-pathtransitions-in.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/371449.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/371449.shtml
英文地址,請注明出處:http://en.pswp.cn/news/371449.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

html 顯示視頻列表,dvd光碟制作節目軌菜單布局,不要視頻縮略圖,只顯示文件列表...

“如何在刻錄視頻光盤時自定義制作菜單?實現的效果就是當光盤插入DVD影碟機播放時,首先會出現一個所有視頻文件列表的菜單(節目軌菜單),就相似于音樂CD曲目表一樣,不需要有視頻縮略圖,可通過遙控器選擇性播放列表中某一…

v3學院教你學習-task和function的異同

v3學院教你學習-task和function的異同 task(任務)與function(函數)的不同 任務與函數主要有以下四點不同: l 函數只能與主模塊共用一個仿真時間單位,而任務定義自己的仿真時間單位。 l 函數不能啟動任務&am…

Spring事件的觀察者模式

介紹 觀察者模式的本質是“定義對象之間的一對多依賴關系,以便當一個對象改變狀態時,其所有依賴關系都會得到通知并自動更新。” GoF。 觀察者模式是發布/訂閱模式的子集,它允許許多觀察者對象查看事件。 可以在不同的情況下使用此模式&#…

jQuery選擇什么版本 1.x? 2.x? 3.x?

目前jQuery有三個大版本: 1.x:兼容ie678,使用最為廣泛的,官方只做BUG維護,功能不再新增。因此一般項目來說,使用1.x版本就可以了,最終版本:1.12.4 (2016年5月20日)2.x:不兼容ie678&a…

Delta DVP 系列 PLC 各裝置 Modbus 地址

此Modbus地址表以 1 為基礎地址 Device Range Type DVP address (Hex) Modbus address (Dec) Effective ES/EX/SS SA/SX/SC EH S 000~255 bit 0000~00FF 000001~000256 0~127 0~1024 0~1024 S 256~511 bit 0100~01FF 000247~000512 S 512~767 bit 020…

Reporting Service 2008 “報表服務器數據庫內出錯。此錯誤可能是因連接失敗、超時或數據庫中磁盤空間不足而導致的”...

今天遇到了兩個關于Reporting Service的問題, 出現問題的環境為Microsoft SQL Server 2008 R2 (SP2) - 10.50.4000.0 (X64) 。具體情況請見下面描述。 1:在修改報表的訂閱后,保存時出現下面錯誤: 提示:報表服務器數據庫…

Java 7:HashMap與ConcurrentHashMap

從我過去有關性能的文章和HashMap案例研究中可能已經看到,Java線程安全性問題可以很輕松地使Java EE應用程序和Java EE容器崩潰。 在對Java EE性能問題進行故障排除時,我觀察到的最常見問題之一是由非線程安全的HashMap get()和pu…

計算機網絡按信息傳輸介質的性能來劃分,大學計算機基礎練習題網絡技術.doc...

網絡技術一、單選:1. 在計算機網絡中,表征數據傳輸可靠性的指標是( )。A?誤碼率 B?頻帶利用率C?信道容量 D?傳輸速率參考答案:A2. 和通信網絡相比,計算機網絡最本質的功能是( )。A?數據通信 B?資源共享C?提高計算機的可靠性…

【2017-03-02】集合、結構體、枚舉

集合和數組的差別: 數組:同一類型,固定長度集合:不同類型,不固定長度 一、普通集合(弱類型) 1、ArryList 使用集合首先要引用命名空間。 或者在ArryList上右鍵找“解析”。 2、集合的定義&#…

Hibernate懶/急加載示例

這篇文章將重點討論為什么以及如何在應用程序中使用稱為LAZY和EAGER加載的概念,以及如何使用Spring的休眠模板以EAGER方式加載LAZY實體。 當然,正如標題本身所暗示的那樣,我們將通過一個示例來說明這一點。 場景就是這樣; 您是一…

讀者使用計算機終端是指,全國2010年10月自學考試管理系統中計算機應用真題及答案...

A.上級模塊向下級模塊傳遞控制信號B.下級模塊對上級模塊傳遞控制信號C.同級模塊之間傳遞數據或控制信號D.上級模塊向下級模塊傳遞數據信號18.“客戶”數據表結構為:客戶編號、手機號、購物金額,合理的字段類型為( )A.字符型,字符型&#xff0…

軟件測試HW02-------fault error failure

程序一 問題一:i應該>0; 問題二: x為空 問題三:test x[2, 3, 5]; y 3;問題四:test: x[2]; y 3;程序二問題一:循環應該反過來;問題二:無;問題三:test:x[1];問題四:test: x[1,2,3…

Mathematica圖片局部變色

這篇博客來源于Stack-Exchange上的一個帖子,問題描述如下:如何將圖中的紅球變為藍球? 這個問題下面有很多答案,我選了最好的一個答案,代碼如下 img Import["C:/Users/1/Desktop/red.jpg"]; getReds[x_Image…

在WebLogic 12c上運行RichFaces

我最初以為我可以在幾個月前寫這篇文章。 但是我最終被不一樣的事情所淹沒。 其中之一是,它無法像我在4.0版本中那樣簡單地啟動RichFaces展示柜。 有了所有的JMS magic和不同的提供者檢查,這已經成為簡單構建和部署它的挑戰。 無論如何,我愿意…

Spring Boot系列教程一:Eclipse安裝spring-tool-suite插件

一.前言 一直使用eclipse,個人習慣選用Eclipsespring-tool-suite進行開發,特別注意Eclipse要選用對應的spring-tool-suite進行安裝,這點筆者浪費了好長時間,以下為對應的版本。eclipse-kepler.4.3.1–>springsource-tool-suite…

湖南工程學院計算機網絡考試,湖南工程學院 計算機網絡期末試卷試題

湖南工程學院 計算機網絡期末試卷試題湖南工程學院 計算機網絡 期末試題(計算機10級,90%的題目)1 從邏輯功能上看,計算機網絡可分為哪兩個子網?答:通信子網和資源子網 2 數據鏈路層的最基本功能答:數據鏈路層的最基本的功能是向該層用戶提供…

C#設計模式(11)——外觀模式(Facade Pattern)

一、引言 在軟件開發過程中,客戶端程序經常會與復雜系統的內部子系統進行耦合,從而導致客戶端程序隨著子系統的變化而變化,然而為了將復雜系統的內部子系統與客戶端之間的依賴解耦,從而就有了外觀模式,也稱作 ”門面“…

OS X Mountain Lion上的多個Java版本

在Mountain Lion之前,Java被捆綁在OS X中。似乎在升級期間,我在計算機上安裝的Java 6版本被刪除了。 顯然,在升級過程中卸載Java的原因是Java運行時存在的安全問題。通過這種方式,您不得不安裝可解決此安全問題的最新版本。 所以我…

Oracle鎖機制的總結【轉】

最近在研究Oracle鎖機制的時候發現網上的資料魚龍混雜將,很多將問題復雜化,讓人感覺沒有條理性。經過查詢原始理論資料,總結如下: 在數據庫理論中,我們知道。我們在執行并發訪問數據庫表時,如果沒有任何一致…

2020暨陽學院園林計算機考研考場,【圖片】2020考研,老學長教你如何規劃!【計算機考研吧】_百度貼吧...

該樓層疑似違規已被系統折疊 隱藏此樓查看此樓二、關鍵一步——院校選擇我把各位同學的院校選擇階段分為以上幾個階段,因為考研這一年中,很多人的目標院校并不是固定不變的,而是隨著不同階段而改變的。學長我在大三下學期這一時間段內也多次更…