簡體   English   中英

如何使用swing和clojure做動畫?

[英]How to do animation using swing and clojure?

我試圖在棋盤上制作棋子。 首先,我創建了一個java.util.Timer對象,“scheduleAtFixedRate”是一個實現為代理函數的TimerTask。 所以我保留了要移動的片段(片段移動記錄)以及何時適當(當用戶使用鼠標移動片段時)的記錄,如果記錄不是nil並執行片段,則應測試TimerTask代理函數 - 移動功能。 片段移動功能僅根據預先計算的矢量更新片段的x和y坐標。 我在片段移動記錄上添加了一個添加手表,所以當它改變時它應該重新繪制板(畫布)。 paint方法測試這件棋子的動作記錄是否為零。

問題是動畫沒有出現。 這件作品只是跳到命運,沒有兩者之間的運動。 動畫方案有一些問題,你有更好的方法嗎?

Swing組件的更新應該在Event Dispatch Thread(EDT)上完成。 所以你應該使用Swing Timer,因為在EDT上執行Timer時會執行任何代碼。

你應該做的就是設置棋子的位置,它將自動重繪自己。

閱讀有關如何使用計時器的Swing教程中的部分獲取更多信息。

Swing不會自動執行動畫,如果你有一個計時器也沒關系。 如果你想要為動畫制作動畫,你需要一次移動一段距離並用每一個動作重新繪制畫布,這樣就可以說出運動的錯覺。

你可以使用Trident庫: 這里

JDK中有一個Animator演示。 它使用awt但它應該給你一些想法。

jdk1.6.0_20 \\演示\\小程序\\動畫

另一個想法可能是從processing.org查看Processing可視化框架。 它是一種簡單但功能強大且文檔齊全的動畫和可視化編程語言。 API非常簡單,並且具有一個名為Rosado的非常透明的Clojure包裝器。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM