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