Begrenze die Anzahl der erstellten Finger auf MAX_TOUCHES und verhindere die Auswahl, wenn die maximale Anzahl erreicht ist.
This commit is contained in:
10
js/app.js
10
js/app.js
@@ -1,6 +1,7 @@
|
||||
document.addEventListener('DOMContentLoaded', function(){
|
||||
const stage = document.getElementById('stage');
|
||||
const touches = new Map(); // id -> {el,x,y}
|
||||
const MAX_TOUCHES = /iPhone/.test(navigator.userAgent) ? 5 : 20;
|
||||
let selecting = false;
|
||||
let selectionDone = false;
|
||||
let selectionTimer = null;
|
||||
@@ -131,9 +132,12 @@ document.addEventListener('DOMContentLoaded', function(){
|
||||
stage.addEventListener('touchstart', function(e){
|
||||
e.preventDefault();
|
||||
const changed = Array.from(e.changedTouches || []);
|
||||
changed.forEach(t=>createFinger(t));
|
||||
cancelSelection();
|
||||
selectionTimer = setTimeout(startSelectionIfNeeded, 700);
|
||||
const prevSize = touches.size;
|
||||
changed.forEach(t=>{ if(touches.size < MAX_TOUCHES) createFinger(t); });
|
||||
if(touches.size > prevSize){
|
||||
cancelSelection();
|
||||
selectionTimer = setTimeout(startSelectionIfNeeded, 700);
|
||||
}
|
||||
}, {passive:false});
|
||||
stage.addEventListener('touchmove', function(e){
|
||||
e.preventDefault();
|
||||
|
||||
Reference in New Issue
Block a user