1
我在我的drawBuffer函數中發現了一個奇怪的行爲,我無法解釋或修復,所以讓我們看看是否有人能幫助我。第一次drawImage對新畫布的調用在IE9上很慢
基本上這個函數從包含多個圖像的圖像中繪製緩衝區畫布。在大多數瀏覽器中,它的作用就像一個魅力,並在不到一毫秒的時間內創建+填充緩衝區畫布。但是對於IE9,我發現第一次繪製緩衝畫布時,大約需要10毫秒。因此,它確實會減慢我的應用程序速度,因爲它應該以30 fps的速度運行。
我已經證明,只有第一次繪製需要大量的10毫秒。如果你運行我的代碼,你會發現我有第一個drawImage調用,第二個drawImage調用在0毫秒內完成。
UiElement.prototype.drawBuffer = function() {
if(!this.bufferCanvas || !this.bufferContext) {
this.bufferCanvas = document.createElement('canvas');
this.bufferCanvas.width = this.sprite.getWidth();
this.bufferCanvas.height = this.sprite.getHeight();
this.bufferContext = this.bufferCanvas.getContext('2d');
} else {
this.bufferContext.clearRect(0, 0, this.bufferCanvas.width, this.bufferCanvas.height);
}
var image = this.sprite.getImage();
var startx = this.sprite.getStartX(this.spriteFrame);
var starty = this.sprite.getStartY(this.spriteFrame);
var width = this.sprite.getWidth();
var height = this.sprite.getHeight();
this.bufferContext.clearRect(0, 0, this.bufferCanvas.width, this.bufferCanvas.height);
this.bufferContext.drawImage(
image,
startx,
starty,
width,
height,
0,
0,
width,
height
);
// 2nd draw is here only for debug purposes
this.bufferContext.drawImage(
image,
startx,
starty,
width,
height,
0,
0,
width,
height
);}
所以總結起來: 創建帆布 - 0毫秒
1日的drawImage - 10毫秒(WTH?)
第二個drawImage - 0毫秒
有什麼辦法來刺激畫布g點,讓她能更快地在那裏畫出拳頭形象?