我有一个设定的间隔,检查我的雪橇是否撞到一棵树。
var sled = $("#sled")
var tree = $(".tree")
var hitting = setInterval(function() {
var treeHit = hitTest(sled,tree )
if (treeHit == true ) {
gameOver()
}
}, 1);
调用我的hitTest函数返回true或false。
function hitTest(a, b) {
var aTop = a.offset().top;
var aLeft = a.offset().left;
var bTop = b.offset().top;
var bLeft = b.offset().left;
return !(
((aTop + a.height()) < (bTop)) ||
(aTop > (bTop + b.height())) ||
((aLeft + a.width()) < bLeft) ||
(aLeft > (bLeft + b.width()))
);
}
这样可以正常工作,但仅限于第一个带有“树”类的dom元素(我有多个),我不知道为什么它不适用于所有人?
答案 0 :(得分:1)
绝对是数组而不是元素的问题。我会将功能更改为
var hitting = setInterval(function () {
var treeHit = false;
$('.tree').each(function () {
treeHit = hitTest(sled, $(this));
if (treeHit == true) {
console.log('hit');
}
});
}, 1);
这是一个工作小提琴
答案 1 :(得分:0)
尝试类似:
$.each($('.tree'), function(tree){
treeHit = hitTest(sled, tree);
return treeHit;
});