|
1 | 1 |
|
2 | 2 | Board.init('board'); |
3 | 3 | Pen.init(Board.ctx); |
4 | | -Pointer.init(); |
| 4 | +var pointerHash = {}; |
5 | 5 |
|
6 | 6 | // Attach event listener |
7 | 7 | var leaveBoard = function leaveBoard(e) { |
8 | 8 | Pen.release(); |
9 | | - Pointer.release(); |
| 9 | + delete pointerHash[e.pointerId]; |
10 | 10 | }; |
11 | 11 |
|
12 | 12 | 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 | + |
14 | 19 | // Get function type |
15 | 20 | Pen.setFuncType(e); |
16 | 21 | 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); |
18 | 23 | }); |
19 | 24 |
|
20 | 25 | Board.dom.addEventListener('pointermove', function(e) { |
21 | 26 | 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); |
23 | 30 | } |
24 | 31 | }); |
25 | 32 | Board.dom.addEventListener('pointerup', leaveBoard); |
26 | 33 | Board.dom.addEventListener('pointerleave', leaveBoard); |
27 | 34 |
|
28 | 35 | // 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)); |
31 | 38 | Pen.setPen(Board.ctx, e); |
32 | 39 |
|
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; |
36 | 43 | } |
37 | 44 | 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); |
40 | 47 | Board.ctx.closePath(); |
41 | 48 | Board.ctx.stroke(); |
42 | 49 |
|
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; |
45 | 52 | } |
0 commit comments