캔버스 자바 스크립트에서 mousemove 이벤트를 사용하여 배경을 지울 수 있습니다 ...touchmove로 터치 스크린에서 mousemove 이벤트를 작동시키는 방법은 무엇입니까?
이제 터치 스크린 (모바일)에 대해 동일한 경험을 얻으려고합니다. 내 코드에 mousemove 및 touchmove 이벤트를 동시에 부여하려면 어떻게해야합니까? touch[XXX]
이벤트에 대한 더 clientX
도 clientY
속성이 없기 때문에,
(function() {
// Creates a new canvas element and appends it as a child
// to the parent element, and returns the reference to
// the newly created canvas element
function createCanvas(parent, width, height) {
var canvas = {};
canvas.node = document.createElement('canvas');
canvas.context = canvas.node.getContext('2d');
canvas.node.width = width || 100;
canvas.node.height = height || 100;
parent.appendChild(canvas.node);
return canvas;
}
function init(container, width, height, fillColor) {
var canvas = createCanvas(container, width, height);
var ctx = canvas.context;
// define a custom fillCircle method
ctx.fillCircle = function(x, y, radius, fillColor) {
/*this.fillStyle = fillColor;
this.beginPath();
this.moveTo(x, y);
this.arc(x, y, radius, 0, Math.PI * 2, false);
this.fill();*/
var radgrad = ctx.createRadialGradient(x, y, 0, x, y, radius);
radgrad.addColorStop(0, 'rgba(255,0,0,1)');
radgrad.addColorStop(0.8, 'rgba(255,0,0,.9)');
radgrad.addColorStop(1, 'rgba(255,0,0,0)');
// draw shape
ctx.fillStyle = radgrad;
ctx.fillRect(x - radius, y - radius, x + radius, y + radius);
};
ctx.clearTo = function(fillColor) {
ctx.fillStyle = fillColor;
ctx.fillRect(0, 1, width, height);
};
ctx.clearTo(fillColor || "#ddd");
// bind mouse events
canvas.node.onmousemove = function(e) {
if (!canvas.isDrawing) {
return;
}
var x = e.pageX - this.offsetLeft;
var y = e.pageY - this.offsetTop;
var radius = 100; // or whatever
var fillColor = '#ff0000';
ctx.globalCompositeOperation = 'destination-out';
ctx.fillCircle(x, y, radius, fillColor);
};
canvas.node.onmouseenter = function(e) {
canvas.isDrawing = true;
};
}
var container = document.getElementById('canvas');
init(container, 5000, 3000, '#f8fa58');
})();
body {
margin-left: -10vw;
margin-top: -30vh;
background: url(https://i-d-images.vice.com/images/articles/meta/2014/10/21/untitled-article-1413860640.jpg?crop=1xw:0.44513137557959814xh;0xw,0.14219474497681608xh&resize=2000:*&output-format=image/jpeg&output-quality=75) no-repeat center center fixed;
-webkit-background-size: cover;
-moz-background-size: cover;
-o-background-size: cover;
background-size: cover;
}
#canvas {
z-index: -1;
top: 2vh;
left: -10vw;
width: 110vw;
height: 130vh;
overflow: hidden;
}
<div id="back"></div>
<div id="canvas"></div>
'당신은 {//}' – Jer
그러나 JQuery와에 코드를 재 작성) $ (요소) CSTE 연구진 ("MouseMove 이벤트 touchstart", 기능 ('같은 뭔가를 할 수 jQuery' ... 더 나은 방법이 있어야합니다! – Marcel
마우스 또는 키 이벤트 등을 사용하여 touchevents 및 eventListeners가있는 eventListeners를 추가하기 만하면됩니다. [MDN : touch events using] (https://developer.mozilla.org/en -US/docs/Web/API/Touch_events/Using_Touch_Events) –