2011-08-26 55 views
5

我剛開始學習有關Graphics2D類的基礎知識,到目前爲止,我可以繪製不同的對象並實現ActionListener以實際在屏幕上將它們移動到onKeyPress。到目前爲止,雖然我想要做更復雜的事情。我想給我的對象一個路徑,並在該特定路徑上對其進行動畫處理。如何在Graphics2D上下文中的Path2D對象上設置動畫矩形

類似的,我會畫一條天空的線,一架飛機應該堅持繪製的線,並保持它自我飛行的特定線。現在有可能嗎?

我不需要任何形式的代碼,但很少有不同的方法或想法會讓我開始工作。我的想法的可視化闡述如下。

起點:

enter image description here

終點:

enter image description here

現在,如上圖所示,我的黃色框(在未來的平面)應與給定的路徑堅持同時動畫(路徑灰線)

我的研究,到目前爲止,

我已搜查我的時髦詞彙,如java的路徑,發現Path2DGeneralPath類,有誰知道,如果我可以用它來解決這個問題。

謝謝

+0

他們的javadoc說什麼? http://download.oracle.com/javase/6/docs/api/java/awt/geom/Path2D.html –

+0

謝謝JB我以前讀過它,但無法理解,但下面的答案澄清和闡述了基本概念。 – doNotCheckMyBlog

回答

2

太棒了!

它讓我想起了自己在IT方面的第一步。我喜歡所有這些簡單的數學東西,但這讓事情在屏幕上移動。 :)

你需要的實際上是一個線性插值。還有其他種類的插值和一些API提供的概念一個很好的封裝,但這裏是主要的想法,你會經常需要這個東西:

必須重寫你的路徑

y = f (x) 

爲時間函數:

在時間0時該項目將在開始位置,在時間1它將達到結束。然後如你所願地增加時間(t)(例如每ms爲0.001)。

所以這裏是一個簡單的線性路徑公式:

x = xstart + (xend-xstart) * t 
y = ystart + (yend-ystart) * t 

當t變化時,你的對象將只沿路徑直線運動,線性有速度將所有的道路上不斷。你可以在年底比如想象某種gravtity的吸引力,這將通過二次加速建模(T^2,而不是T)...

問候, 斯特凡

+0

好的解釋,我會考慮你的公式來動畫。謝謝...享受NHL! – doNotCheckMyBlog

1

首先,使能力從點a移動到點b。這是用簡單的代數完成的。

其次,使能夠採取路徑並將其轉化爲點。然後當你要做曲線時,你實際上只是沿着那條曲線從一個點到另一個點。

這是最基本的方式來做到這一點,並適用於大多數情況。

+0

所以我可以通過Path2D創建路徑並調用方法,getIteratorPath會給我有關路徑的信息?這樣以及路徑上的x,y位置?這聽起來很容易,讓我開始,感謝glowcoder – doNotCheckMyBlog

1

你說的是簡單的2D圖形和精靈。如果這就是你需要的全部,那麼對於Java看看Java 2D Sprites如果你更傾向於或最終會用相機的觀點,並希望從不同角度觀看動畫,那麼使用Java 3D from the OpenSource Java 3D.org即可。無論哪種方式,你想要的只是一個簡單的線條翻譯,在2D或3D中都很簡單。

1

你可以嘗試去線槽我的開源大學項目代碼 - LANSim。代碼在代碼菜單中可用。它與你正在做的事情類似。

+0

感謝分享,看起來不錯,我會仔細看看 – doNotCheckMyBlog

相關問題