Skip to content

Commit 68e7b60

Browse files
committed
Add multi touch support
1 parent ebb76e1 commit 68e7b60

File tree

2 files changed

+44
-39
lines changed

2 files changed

+44
-39
lines changed

js/libs/Pointer.js

Lines changed: 23 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -1,26 +1,24 @@
1-
var Pointer = (function() {
2-
var pointer = {
3-
pos1: {
4-
x: -1,
5-
y: -1,
6-
},
7-
pos0: {
8-
x: -1,
9-
y: -1
10-
},
11-
isClicked: false,
12-
release: function release() {
13-
this.isClicked = false;
14-
this.pos0.y = -1;
15-
this.pos0.x = -1;
16-
},
17-
init: function init() {
18-
this.release();
19-
},
20-
set: function set(pos) {
21-
this.pos1.x = pos.x;
22-
this.pos1.y = pos.y;
23-
}
1+
var Pointer = function Pointer() {
2+
this.pos1 = {
3+
x: -1,
4+
y: -1
245
};
25-
return pointer;
26-
})();
6+
this.pos0 = {
7+
x: -1,
8+
y: -1
9+
};
10+
this.isClicked = false;
11+
}
12+
13+
Pointer.prototype = {
14+
constructor: Pointer,
15+
release: function release() {
16+
this.isClicked = false;
17+
this.pos0.y = -1;
18+
this.pos0.x = -1;
19+
},
20+
set: function set(pos) {
21+
this.pos1.x = pos.x;
22+
this.pos1.y = pos.y;
23+
}
24+
}

js/main.js

Lines changed: 21 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,45 +1,52 @@
11

22
Board.init('board');
33
Pen.init(Board.ctx);
4-
Pointer.init();
4+
var pointerHash = {};
55

66
// Attach event listener
77
var leaveBoard = function leaveBoard(e) {
88
Pen.release();
9-
Pointer.release();
9+
delete pointerHash[e.pointerId];
1010
};
1111

1212
Board.dom.addEventListener('pointerdown', function(e) {
13-
Pointer.set(Board.getPointerPos(e));
13+
14+
// Initialise pointer
15+
pointer = new Pointer();
16+
pointer.set(Board.getPointerPos(e));
17+
pointerHash[e.pointerId] = pointer;
18+
1419
// Get function type
1520
Pen.setFuncType(e);
1621
if (Pen.funcType === Pen.funcTypes.menu) alert('A menu should be opened in the future');
17-
else drawOnCanvas(e, Pointer, Pen);
22+
else drawOnCanvas(e, pointer, Pen);
1823
});
1924

2025
Board.dom.addEventListener('pointermove', function(e) {
2126
if (Pen.funcType && Pen.funcType.includes(Pen.funcTypes.draw)) {
22-
drawOnCanvas(e, Pointer, Pen);
27+
28+
let pointer = pointerHash[e.pointerId];
29+
drawOnCanvas(e, pointer, Pen);
2330
}
2431
});
2532
Board.dom.addEventListener('pointerup', leaveBoard);
2633
Board.dom.addEventListener('pointerleave', leaveBoard);
2734

2835
// Draw method
29-
function drawOnCanvas(e, Pointer, Pen) {
30-
Pointer.set(Board.getPointerPos(e));
36+
function drawOnCanvas(e, pointerObj, Pen) {
37+
pointerObj.set(Board.getPointerPos(e));
3138
Pen.setPen(Board.ctx, e);
3239

33-
if (Pointer.pos0.x < 0) {
34-
Pointer.pos0.x = Pointer.pos1.x - 1;
35-
Pointer.pos0.y = Pointer.pos1.y - 1;
40+
if (pointerObj.pos0.x < 0) {
41+
pointerObj.pos0.x = pointerObj.pos1.x - 1;
42+
pointerObj.pos0.y = pointerObj.pos1.y - 1;
3643
}
3744
Board.ctx.beginPath();
38-
Board.ctx.moveTo(Pointer.pos0.x, Pointer.pos0.y)
39-
Board.ctx.lineTo(Pointer.pos1.x, Pointer.pos1.y);
45+
Board.ctx.moveTo(pointerObj.pos0.x, pointerObj.pos0.y)
46+
Board.ctx.lineTo(pointerObj.pos1.x, pointerObj.pos1.y);
4047
Board.ctx.closePath();
4148
Board.ctx.stroke();
4249

43-
Pointer.pos0.x = Pointer.pos1.x;
44-
Pointer.pos0.y = Pointer.pos1.y;
50+
pointerObj.pos0.x = pointerObj.pos1.x;
51+
pointerObj.pos0.y = pointerObj.pos1.y;
4552
}

0 commit comments

Comments
 (0)