0
我有一個ID爲cnv的畫布。Canvas Loads Previous Image
<canvas id='cnv'></canvas>
我有一個javascript函數可以改變畫布中的圖像。圖像各不相同。
function changeImageInACanvas(dynamicSource){
var myid_signature = document.getElementById("cnv");
var myid_ctx_signature= myid_signature.getContext('2d');
var myid_signature_image = document.getElementById("img_mysignature");
myid_signature_image.src = dynamicSource;
myid_ctx_signature.clearRect(0, 0, myid_signature.width, myid_signature.height);
if (myid_signature_image.complete){
myid_ctx_signature.drawImage(myid_signature_image,0,0, myid_signature_image.width, myid_signature_image.height, 0, 0, myid_signature.width, myid_signature.height);
}else{
myid_signature_image.onload = function() {
myid_ctx_signature.drawImage(myid_signature_image,0,0, myid_signature_image.width, myid_signature_image.height, 0, 0, myid_signature.width, myid_signature.height);
};
}
}
在第一次,功能適當地執行加載圖像的畫布,但在第二次,顯示了以前的形象,並沒有顯示的新形象。
我通過在函數的每一行放置一個斷點來調試它。我發現新圖像在第二次執行該函數時被加載,但在該函數之後,畫布再次加載前一個/第一個圖像。我錯過了什麼?
沒有任何的變化,你的答案的任何理由? – Eliyah
對不起,對於遲到的答案,但你的HTML代碼不包括任何img標籤,所以你的變量'myid_signature_image'將是未定義的,因此不會顯示圖像。我改爲將該變量定義爲JavaScript代碼中的圖像。可能會導致麻煩的其他問題是,您在else語句中聲明onload事件,該事件在聲明圖像源後聲明。 – Niddro