Ho una parte di un gioco in cui il cursore dovrebbe "rallentare" quando passa sopra alcuni div. Sto usando una funzione in grado di rilevare una collisione con il div. Funziona bene quando il cursore incontra il primo div, ma non funziona affatto sul secondo div.La funzione JavaScript ha effetto solo sul primo div con classe
Check out this jsFiddle per una migliore idea di cosa sto parlando. Passa il cursore sul primo blocco bianco (class='thing'
) a sinistra e rallenta. Passa il cursore sull'altro blocco (anche class='thing'
) e non accade nulla. Ho bisogno di questa funzione di collisione per lavorare su tutte le div in cui class='thing'
.
HTML
<div id='cursor'>
</div>
<div class='thing' style='width:70px; height:70px; background: #fff; position: absolute; bottom: 350px; right: 800px; z-index: -1;'>
</div>
<div class='thing' style='width:70px; height:70px; background: #fff; position: absolute; bottom: 200px; right: 400px; z-index: -1;'>
</div>
JS
(function collide(){
var newInt = setInterval(function() {
function collision($cursor, $thing) {
var x1 = $cursor.offset().left;
var y1 = $cursor.offset().top;
var h1 = $cursor.outerHeight(true);
var w1 = $cursor.outerWidth(true);
var b1 = y1 + h1;
var r1 = x1 + w1;
var x2 = $thing.offset().left;
var y2 = $thing.offset().top;
var h2 = $thing.outerHeight(true);
var w2 = $thing.outerWidth(true);
var b2 = y2 + h2;
var r2 = x2 + w2;
// change 12 to alter damping higher is slower
var varies = 12;
if (b1 < y2 || y1 > b2 || r1 < x2 || x1 > r2){
} else {
varies = 200;
console.log(varies);
}
$xp += (($mouseX - $xp)/varies);
$yp += (($mouseY - $yp)/varies);
$("#cursor").css({left:$xp +'px', top:$yp +'px'});
}
$(collision($('#cursor'), $('.thing')));
//$('.result').text(collision($('#cursor'), $('.thing')));
}, 20);
})();
$ cosa è un Evitare di raccolta – mplungjan
usando 'setInterval 'per le animazioni perché può causare (e, in realtà, nelle tue cause JSFiddle) ritardi. Usa 'window.requestAnimationFrame'. –
http://sourceforge.net/p/jquerycollision/code/ci/master/tree/jquery-collision.js – mplungjan