2016-01-23 144 views
0

我在不同的AngularJS指令中有多個HTML canvas元素。每個元素都使用​​進行動畫製作。多個HTML5 canvas動畫

  1. 表現如何?可以撥打​​爲每個canvas/directive或正在使用一個servicecallback函數爲所有渲染功能提供更好的方法嗎?
  2. 在繪製內容之前,渲染函數中會進行大量計算。對於每一幀,這些計算都是必要的。這應該在​​呼叫之前完成,還是可以在此呼叫之後進行大量計算?

回答

2

​​將獲得對同一幀完成的所有請求,但我不確定請求的順序是什麼。我假設他們按照他們的要求進行排序。

多個幀請求或調用多個函數的單個幀請求之間的區別很小。這將是一種風格選擇,而不是性能選擇。

如果每個渲染幀都需要計算,那麼讓它們獨立於幀請求運行是沒有好處的,因爲您必須找到一種方法來保持它們同步,這會增加開銷。如果它們不依賴於框架,那麼最好以任何速度進行操作,以保持應用程序的順暢運行。

+1

根據[一些測試](https://jsfiddle.net/c3wue8pf/)我做了,似乎所有的raf甚至混合在一個單一的(他們都共享同一時間的論點)。通話順序似乎在FF和Chrome中得到了尊重。當一個幀被丟棄時,整個呼叫也被丟棄。 – Kaiido

+0

現在,爲了更好地適應OP的需求,也許他應該檢查是否所有的動畫確實需要在每一幀更新:如果有些在屏幕之外,也許渲染可以省略,並且更新取決於時間而不是增加的 ;如果計算量很大,也許webworkers可以提供幫助;等等 – Kaiido