sınıfındaki ilk div'u etkiler. İmleç, belirli div'lar üzerinden geçtiğinde "yavaşlatması" beklenen bir oyunun bir parçasına sahibim. Div ile bir çarpışmayı algılayabilen bir işlev kullanıyorum. Bu, imleç ilk div ile karşılaştığında iyi çalışır, ancak ikinci div'da hiç işe yaramıyor. Ne hakkında konuştuğumu daha iyi anlamak içinJavaScript işlevi sadece
Check out this jsFiddle. İmleci soldaki ilk beyaz bloktan (class='thing'
) geçirin ve yavaşlar. İmleci diğer bloğun üzerine geçirin (class='thing'
) ve hiçbir şey olmuyor. class='thing'
'un bulunduğu tüm divlarda çalışmak için bu çarpışma işlevine ihtiyacım var. İstediğiniz gibi
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);
})();
$ şey kullanarak bir koleksiyon – mplungjan
kaçının olduğu beklendiği gibi bu bir seçici olarak kimliği kullanarak yapılabilir elemanları Bunu çalışması için aşağıdaki gibi bir kod değiştirebilir hem seçmeniz gerekir bu aşmak için 'setInterval 'animasyonlar için çünkü (ve aslında JSFiddle neden olur) neden olabilir. 'Window.requestAnimationFrame' öğesini kullanın. –
http://sourceforge.net/p/jquerycollision/code/ci/master/tree/jquery-collision.js – mplungjan