2014-03-01 49 views
0

我有一個小的HTML畫布應用程序,我使用動力學js來動畫幾百個小圓圈沿着個別線移動。它工作正常,但有時可能會有點慢。我希望能夠將它擴展到幾千個,並且每個框架都會更新每個圓圈。我怎樣才能讓它更快?爲了這個目的,有沒有更好的替代動力學js的方法?謝謝。動態js速度與許多對象

這裏有一個例子: http://www.cs.middlebury.edu/~gkrathwohl/running/ncaa.html

+0

無法確定該頁面發生了什麼。該腳本似乎被以某種方式混淆。你可以發佈一個jsfiddle嗎?我最初的問題是你如何做你的主要遊戲循環。我早期的錯誤之一是允許移動的基礎是幀速率,而不是從主循環上次運行以來的時間量。 – azurelogic

回答

0

你不是讓用戶與你的亞軍圈進行交流。

由於您不需要Kinetic.Circles提供的交互功能,因此您可以通過在單個Kinetic.Shape上繪製所有跑步者而不是創建數百(千)個單獨的Kinetic.Circles來獲得速度提升。

Kinetic.Shape爲您提供了一個上下文,您可以使用本地context.arc(x,y,radius,0,PI2)更快速地繪製非交互式圓圈。

如果您以後需要交互性,您可以快速測試鼠標位置與每個跑步者對象的數學關係。

祝您的項目順利!

+0

非常感謝!這就是我一直在尋找的。對於任何人仍然感興趣,我做了一個小提琴,你可以在很多方向上散佈很多點。 http://jsfiddle.net/QmbB9/我會盡力讓它們都在同一個Kinetic.Shape中。 – user2280271

+0

其實你能否詳細闡述一下?我不需要交互性,但我仍然需要每個圈子按照自己的步調遵循自己的路線。這裏有一個簡單的小例子:http://jsfiddle.net/QmbB9/。在實際的項目中,每個kinetic.circle都會跟蹤它所遵循的路徑和速度。 – user2280271

+0

明白了。所以這些圈子不再是對象。在動畫中,您基於相應的運行器對象完全重繪所有圓圈(使用setDrawFunc)。這使得它相當順暢,可達幾千。也許要求10,2萬是太多了。 – user2280271