2008-09-23 68 views
0

我在我的桌面應用程序中有一個頁面,我已經實現了簡單的抓取和平移。它效果很好。2d圖形效果101:扔東西

當您以這種方式平移並釋放時,頁面將在您放置它的地方停止。

我希望它稍微有點動力,並最終停下來。我想,就像iPhone UI中的'throw'一樣。

我並不十分追求完美,只是一種非常簡單的感覺,能夠「拋出」該頁面。

回答

3

只需跟蹤頁面的當前速度以及其位置。當用戶釋放時,將速度設置爲您平移的最後一個量。然後,在隨後的幀中,繼續以當前速度進行平移,然後將當前速度降低某個固定量(大小),直至達到零。

3

您可以通過跟蹤位置來計算移動的速度。由於缺乏精確性,並且出於平滑的原因,您會希望對最後的多個職位進行平均,假設他們在幾乎相同的時間段內彼此分開。

一旦你有了這些的平均值,你可以根據你想要顯示的效果來調整你的速度。一旦計算出來,只需在平均值中加上一個不變的乘數。

從這裏,你將通過這個速度移動窗口,降低速度直到它達到0爲止。減少的速度也取決於個人偏好。如果你想讓窗口移動一段較長的時間,你將會以比想要停止更快的速度更慢的速度降低速度。

如果您想要「反彈」效果,只需檢查窗口何時碰到屏幕一側。如果它碰到左邊或右邊(即WindowX < = 0或WindowX + WindowWidth> = ScreenWidth),則將X速度乘以-1以在另一個方向上發送。 Y軸也一樣。如果不添加「反彈」效果,我會建議至少進行相同的檢查,但是當它碰到屏幕的一側時,會強制回到屏幕(即,WindowX> = 0並且WindowX < = ScreenWidth - WindowWidth)將速度設置爲0,完全停止動畫。

我也會推薦你在最大速度上加上一個上限(即在-x和x單位之間)。這將防止發生「某些事情」的奇怪情況,並且速度以瘋狂的數字結束,並且屏幕以每小時100萬英里的速度反彈。