@Kooper_pro

DrawImage рисует через раз, как исправить?

Есть канвас
<canvas id="canvas_st"></canvas>
Функция js перерисовки, которая находится в блоке $(document).ready(function())
function resize_canvas(params,canvas) {
	var width=document.body.clientWidth; // ширина  
	var height=document.body.clientHeight; // высота
	var height_can=width/1.777777777777778; //ratio
	
	var ctx = canvas.getContext("2d");
	canvas.width = width;
	canvas.height = height_can;

	document.getElementById("canvas_st").style.width= width;
	document.getElementById("canvas_st").style.height= height_can;
	
	for (keys in params) {
          for (let i = 0; i < params[keys].length; i++) {
             img = new Image();
             img = document.createElement('img');
             img.src = params[keys][i];	
              ctx.drawImage(img, 0, 0, width, height_can);
  	    }
        }
}

Так же есть дефолтный массив картинок
var img_array = {
	img1: ["../base_img/test/default/img1.png"],
	img2: ["../base_img/test/default/img2.png"],
	img3: ["../base_img/test/default/img3.png"],
	img4: ["../base_img/test/default/img4.png"],
	img5: ["../base_img/test/default/img5.png"]
};


При загрузке страницы, прорисовываем массив картинок и при изменение размера, тоже
$(document).ready(function(){
	
       var canvas = document.getElementById("canvas_st");
        resize_canvas(img_array,canvas);
	
        window.onresize = function( event ) {
             resize_canvas(img_array,canvas);
        };
});


Функция клика на канвасе
canvas.addEventListener('mouseup', function (e) {
    	var x = e.pageX - e.target.offsetLeft,
       		y = e.pageY - e.target.offsetTop,
       		heght_img=$("#canvas_st").height();
		width_img=$("#canvas_st").width();

		y=(y*100)/heght_img;
		x=(x*100)/width_img;

		if (y>0 && y<20) {
			rewrite_array("img1","../base_img/test/cat1/sub1/2.png");
			resize_canvas(img_array,canvas);
		}
		if (y>20 && y<75 ) {
			rewrite_array("img2","../base_img/test/cat2/sub2/1.png");
			resize_canvas(img_array,canvas);
		}
		if (y>75 ) {
			rewrite_array("img3","../base_img/test/cat3/sub3/1.png");
			resize_canvas(img_array,canvas);
		}
	
	});


Функция перезаписи массива:
function rewrite_array(id_name,urls) {
	for (keys in img_array) {
		for (let i = 0; i < img_array[keys].length; i++) {
			if (keys==id_name) {
				img_array[keys][i]=urls;
			}
		}
	}
}

Проверял на IE, клики нормально отрисовываются, но на хроме, нет, при первом клике не отрисовывается, а вот при повторном уже отрисовывает, и это касается, все отрисовки. как исправить?
  • Вопрос задан
  • 137 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы