본문 바로가기

Frontend/jQuery

JS jQuery (part. 24) - 이벤트 객체 활용

모든 리벤트 리스너는 이벤트 객체가 있다

기존 자바스크립트의 이벤트 객체는 웹 브라우저마다 사용 방법과 이벤트 객체의 속성도 달랐다

하지만 jQuery가 스스로 이벤트 객체를 정형화하므로 jQuery의 이벤트 객체는 모든 웹 브라우저에서 같은 방법으로 사용할 수 있으며, 같은 속성을 갖는다

 

<body>
    <canvas id="canvas" width="700" height="400" style="border: 3px solid #000"></canvas>
</body>

 

HTML5부터 지원하는 canvas 태그

jQuery가 canvas 태그를 정식으로 지원하지 않는다

그래서 id 속성을 부여하고 getElementById( )를 사용한다

 

$(function () {
  var canvas = document.getElementById('canvas');
  var context = canvas.getContext('2d');

  $(canvas).on({
    mousedown: function (event) {
    var position = $(this).offset();
    var x = event.pageX - position.left;
    var y = event.pageY - position.top;

    context.beginPath();
    context.moveTo(x, y);
  },
    mouseup: function (event) {
    var position = $(this).offset();
    var x = event.pageX - position.left;
    var y = event.pageY - position.top;

    context.lineTo(x, y);
    context.stroke();
  }
  })
});

 

canvas 객체에서 context를 추출하고 이벤트를 연결

 

마우스 커서의 상대 위치를 구하는 방법

 

var position = $(this).offset();

var x = event.pageX - position.left;

var y = event.pageY - position.top;