2013-07-23 41 views
0

我使用GWT畫布上繪製50倍相同的16×16的圖像全屏顯示(在平局())與​​,主循環低於:GWT帆布context.drawImage很慢

AnimationScheduler.get().requestAnimationFrame(new AnimationCallback() { 
        public void execute(double timestamp) { 
         mainLoop(deltaTimeInMs); 
         AnimationScheduler.get().requestAnimationFrame(this,canvasElem); 
        } 
       }, canvasElem); 


void mainLoop(double deltaTime) { 
     calcFPS(deltaTime); 
     clearContext(); 
     update(deltaTime); 
     draw(); 
} 

我店使用ClientBundle作爲DataResources的圖像。它們被轉換成圖像並且被轉換爲ImageElement以能夠調用context.draw。

50幅圖像之前的FPS被渲染大約60FPS。當它們被渲染時,FPS大約爲20FPS。 (在chrome和mozilla中)在DEV模式下。

我認爲圖像加載可能是一個問題。

+0

運行速度太慢的原因是DEV模式。在GWT 2.5+版本中,它在SDM(超級模式)上運行良好。 – Vjeetje

回答

-3
AnimationScheduler.get().requestAnimationFrame(new AnimationCallback() { 
        public void execute(double timestamp) { 
         mainLoop(deltaTimeInMs); 
         AnimationScheduler.get().requestAnimationFrame(this,canvasElem); 
        } 
       }, canvasElem); 


void mainLoop(double deltaTime) { 
     calcFPS(deltaTime); 
     clearContext(); 
     update(deltaTime); 
+0

你願意爲解決方案添加一些解釋嗎?爲什麼它比原來的問題更快?它更快嗎? – Manuel

+1

這是一個巨魔的答案... 他剛剛刪除了draw()調用。 請降低此參數 – Vjeetje