context.drawImage 是否在 Canvas 上顯示影象
在嘗試使用 context.drawImage
在畫布上繪製影象物件之前,請確保影象物件已完全載入。否則影象將無聲顯示。
在 JavaScript 中,不會立即載入影象。相反,影象是非同步載入的,並且在載入 JavaScript 的過程中,JavaScript 繼續執行跟隨 image.src
的任何程式碼。這意味著 context.drawImage
可以用空影象執行,因此不顯示任何內容。
在嘗試使用 .drawImage 繪製影象之前確保影象已完全載入的示例
var img=new Image();
img.onload=start;
img.onerror=function(){alert(img.src+' failed');}
img.src="someImage.png";
function start(){
// start() is called AFTER the image is fully loaded regardless
// of start's position in the code
}
在嘗試使用任何影象繪製之前載入多個影象的示例
有更多功能齊全的影象載入器,但這個例子說明了如何做到這一點
// first image
var img1=new Image();
img1.onload=start;
img1.onerror=function(){alert(img1.src+' failed to load.');};
img1.src="imageOne.png";
// second image
var img2=new Image();
img2.onload=start;
img1.onerror=function(){alert(img2.src+' failed to load.');};
img2.src="imageTwo.png";
//
var imgCount=2;
// start is called every time an image loads
function start(){
// countdown until all images are loaded
if(--imgCount>0){return;}
// All the images are now successfully loaded
// context.drawImage will successfully draw each one
context.drawImage(img1,0,0);
context.drawImage(img2,50,0);
}