我正在研究JavaScript中的一個非常小的項目,只是爲了幫助我從下往上理解畫布。我現在試圖避免使用框架之類的東西,這樣我就可以理解HTML5遊戲的基本功能。與矩形相比,繪製圓的效率真的很低嗎?
這是一個相當基本的「光標動」與衰落的尾巴。而已。只是一種顏色的形狀,基於玩家的輸入而移動,尾部呈現淡淡的尾巴。我建議你嘗試一下;它實際上很漂亮。
不管怎麼說,很明顯,我寧願光標是一個圓,因爲它看起來更平滑。然而,每當我這樣做,瀏覽器幾乎完全鎖定我。它很明顯起作用,至少在很大程度上,但它比通過冷凍花生醬的烏龜慢。
我知道我不應該包括只是 JSFiddle,但它是一種很多代碼,整個事情運行緩慢。
的問題是最有可能在抽獎功能:
Game.draw = function() {
for (var sn = 0; sn < this.strokes.length; sn++) {
var s = this.strokes[sn];
/*1*/ this.context.arc(s.x, s.y, this.cursorRadius, 0, 2 * Math.PI);
this.context.fillStyle = this.bgColor;
/*2*/ //this.context.fillRect(s.x, s.y, this.cursorWidth, this.cursorHeight);
/*1*/ //this.context.fill();
this.context.fillStyle = s.getColor();
/*2*/ //this.context.fillRect(s.x, s.y, this.cursorWidth, this.cursorHeight);
/*1*/ this.context.fill();
}
};
該線被標記的方法。 1對應於圓圈,而2對應於矩形。
這裏是整個項目:http://jsfiddle.net/w4Rg3/3/
我只是覺得一種很難相信它是如此令人難以置信的慢得多有圓(看到所有的JS 可以做項目之後),而我可能會做錯事。
您想使用['requestAnimationFrame()'](http://paulirish.com/2011/requestanimationframe-for-smart-animating/),而不是忙碌的等待循環。但通常情況下,您需要更多地削減代碼。我知道放棄並讓別人爲你調試你的代碼是很誘人的,但是你需要花時間精心製作一個真正的簡化測試用例,用真正需要的最少量的代碼來重現問題。在途中,你幾乎可以肯定地看到原因,在你自己的。 – Phrogz
@Progrog:謝謝你的迴應。我會嘗試更多的,但我只想指出,我實際上使用requestAnimationFrame()。當你建議我使用忙等待循環時,不確定你指的是什麼。 –