Ciao a tutti!
Problema: ho degli oggetti e devo poterli trascinare in js, questi oggetti sono anche riportati in un array, così basta che scorro l'array con un for e se nel punto cliccato è presente un array parte l'animazione (con setInterval) che sposterà l'oggetto tanto quanto sposto il mouse (siccome l'oggetto seguirà il mouse) l'animazione poi terminerà appena si rilascia il tasto del mouse (proprio come una trascinazione)
il problema nasce dal fatto che gli oggetti sono in html5 canvas, e se ci sono tante forme prima che capisce se un oggetto è stato selezionato o meno ci mette un pò di tempo...infatti se clicco sul primo oggetto dell'array me lo seleziona se è l'ultimo no, o meglio, devo tenere premuto moooolto più a lungo.
io credo perchè quando ci mette tanto, il tasto del mouse è già stato lasciato e l'animazione nel setInterval non viene eseguita.
codice:var selezione=-1; for(var i=1; i<=oggetti.length && selezione==-1;i++) { disegna(i); //questa funzione disegna gli oggetti dell'array da zero a i var imageData = ctx.getImageData(x, y, 1, 1);//qua prelevo ogni informazione del disegno nel canvas, solo nel punto cliccato con il mouse, con coordinate x y if (imageData.data[3]>0){selezione=i;}//imageData.data[3] indica il colore presente nel punto cliccato, se è zero non c'è nulla, se è maggiore mi zegno in una variabile l'id dell'oggetto e esco dal for } if(selezione!=-1){animazione==setInterval(function(){/*codice per l'animazione*/},10);} //if il mouse viene rilasciato --> clearInterval(animazione);

Rispondi quotando