canvas畫圖其實是個異步的過程,如果不按照下面的方式在回調中顯示圖片,就會發生第一次畫圖時,加載不出來的情況。
/** *這裏寫成成員方法的樣子,根據需要修改即可
* 預加載畫圖,因爲canvas畫圖是異步的
* @param url
* @param callback
*/
preImage:function(url,callback){
var img = new Image(); //創建一個Image對象,實現圖片的預下載
img.src = url;
if (img.complete) { // 如果圖片已經存在於瀏覽器緩存,直接調用回調函數
callback.call(img);
return; // 直接返回,不用再處理onload事件
}
img.onload = function () { //圖片下載完畢時異步調用callback函數。
callback.call(img);//將回調函數的this替換爲Image對象
};
},