我有以下一小段代碼,我用它來確定畫布上顏色的百分比,在這種情況下,colorData.data返回的顏色是透明的作爲[0,0,0,0]試圖優化算法中的某些顏色在畫布中的百分比
由於我在mouseove上返回這個百分比,因此運行它非常昂貴,試圖優化它。還要記住畫布的顏色不斷變化,所以我需要每次抓取imageData並通過它迭代它。
瓶頸當然都是在scratchPercentage函數中,我需要一種方法來優化這個例子,比如每次只得到新的更改並且不運行所有的圖像數據。
scratchFunc: function(e, $this, event)
{
e.pageX = Math.floor(e.pageX - $this.canvas_offset.left);
e.pageY = Math.floor(e.pageY - $this.canvas_offset.top);
$this['scratch' + event](e, $this);
if($this.settings['scratch' + event])
$this.settings['scratch' + event](e, $this.scratchPercentage($this));
},
scratchPercentage: function($this)
{
var hits = 0;
var imageData = $this.ctx.getImageData(0,0,$this.canvas.width,$this.canvas.height)
for(var i=0, ii=imageData.data.length; i<ii; i=i+4)
{
if(
imageData.data[i] == 0 &&
imageData.data[i+1] == 0 &&
imageData.data[i+2] == 0 &&
imageData.data[i+3] == 0
) hits++;
}
return hits/($this.pixels) * 100;
},
你可以把例子放在jsfiddle上嗎? – elclanrs 2012-02-26 00:47:09