[javascript] Paper.js로 터치 제스처 및 모션 추적을 이용한 그래픽 상호 작용 구현

Paper.js는 JavaScript 기반의 벡터 그래픽 라이브러리로, 웹 애플리케이션에서 그래픽 요소들을 다루는 데 도움을 줍니다. 이번 글에서는 Paper.js를 사용하여 터치 제스처와 모션 추적을 통해 그래픽 상호 작용을 구현하는 방법에 대해 알아보겠습니다.

1. Paper.js 설치 및 설정

먼저, Paper.js를 설치하고 프로젝트에 추가해야 합니다. 다음 명령어를 사용하여 Paper.js를 설치합니다:

npm install paper

그리고 HTML 파일에 다음과 같이 스크립트 태그를 추가합니다:

<script src="path/to/paper.js"></script>

2. 터치 제스처 기능 구현

Paper.js는 터치 제스처를 쉽게 처리할 수 있도록 제공하는 여러 메서드를 가지고 있습니다. 이를 사용하여 터치 이벤트를 감지하고 그래픽 요소에 대한 상호 작용을 구현할 수 있습니다.

다음은 간단한 예제 코드입니다. 웹 페이지에 터치한 위치에 원을 그리고, 터치한 곳으로 원을 이동시키는 기능을 구현합니다:

// Paper.js 초기화
paper.install(window);
paper.setup("canvas");

// 터치 이벤트 핸들러 등록
function onTouch(event) {
    var circle = new Path.Circle(event.point, 50);
    circle.fillColor = "red";
}

// 터치 이벤트 리스너 등록
paper.view.onMouseDown = onTouch;

// 터치로 원 이동 기능 구현
function onMove(event) {
    var circle = paper.project.activeLayer.children[0];
    circle.position = event.point;
}

// 터치 이동 이벤트 리스너 등록
paper.view.onMouseDrag = onMove;

위의 코드에서 canvas는 그래픽 요소를 그릴 HTML 캔버스입니다. onTouch 함수는 터치 이벤트가 발생했을 때 실행되며, onMove 함수는 터치 이동 이벤트가 발생했을 때 실행됩니다.

3. 모션 추적 기능 구현

Paper.js는 장치의 기울기, 회전 등과 같은 모션 정보를 추적하여 활용할 수 있는 기능도 제공합니다. 이를 이용하여 그래픽 요소의 회전, 크기 조정 등을 구현할 수 있습니다.

다음은 모션 추적을 통해 원을 회전시키는 예제 코드입니다:

// 모션 이벤트 핸들러 등록
function onMotion(event) {
    var circle = paper.project.activeLayer.children[0];
    circle.rotate(event.gamma);
}

// 모션 이벤트 리스너 등록
paper.view.onFrame = onMotion;

위의 코드에서 event.gamma는 장치의 기울기 각도를 나타냅니다. 이 값을 사용하여 원을 회전시킵니다.

결론

이번 글에서는 Paper.js를 사용하여 터치 제스처 및 모션 추적을 통해 그래픽 상호 작용을 구현하는 방법에 대해 알아보았습니다. Paper.js는 강력한 벡터 그래픽 기능을 제공하며, 다양한 그래픽 요소를 상호 작용 가능하게 만들어줍니다.

더 많은 정보를 원하신다면, Paper.js 공식 문서를 참고해보세요.