Привет, я пытаюсь вызвать изображение (перерисовать) всякий раз, когда я двигаю мышью, , но проблема в изображении иногда непостоянно мерцает при перемещении мыши, и это действительно раздражает.javascript canvas image мерцает с вызовом mousemove
Я попытался найти ответы от других сообщений stackoverflow, но они не тихие, похожие на мои.
Я упростил свой код, чтобы его было легко понять.
Дело в том, что я должен вызывать изображение всякий раз, когда мышь перемещается, поэтому он работает с другими кодами, которые я написал.
Причина, по которой я написал код таким образом, заключается в том, что img.src может быть изменен всякий раз, когда пользователь нажимает на определенную позицию на странице.
Входя в подробности, он в основном передает объект с траекторией изображения, который меняет img.src, когда пользователь нажимает.
веб-страница постоянно меняется, поэтому необходимо mousemove.
var canvas = document.getElementById("canvas");
var ctx = canvas.getContext("2d");
canvas.height = window.innerHeight;
canvas.width = window.innerWidth;
canvas.onmousemove = mousemove;
function mousemove(e){
ctx.clearRect(0,0,canvas.width,canvas.height);
var img = new Image(); // Create new img element
img.addEventListener("load", function() {
ctx.drawImage(img,100,100,400,400);
}, false);
img.src = 'images/reception.jpg';
}
[Там будут] (http://stackoverflow.com/questions/33749923/image-flickers-when-mouse-moves-in-html-canvas) [уже дублирует] (http://stackoverflow.com/questions/11506619/image-flickers-during-drag-in-canvas) этого вопроса. Проблема в том, что при каждом mousemove вы загружаете новое изображение. Решение состоит в том, чтобы загрузить изображение один раз, из обработчика события mousemove и только вызывать операции рисования холста в mousemove. – Kaiido