У меня есть холст с идентификатором cnv.Холст нагрузки Предыдущее изображение
<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