Как узнать, находится ли элемент1 в области элемента2?

Здравствуйте, я новичок в JavaScript и столкнулся с данной проблемой. В результате анимации два элемента могут пересечься, и мне нужно зафиксировать этот момент. Я пробовал вот так:
var timer3 = setInterval(function(){elem()}, 50);
function elem(){
x=$('#create').offset();
y=$('#fly').offset();
if (x.left == y.left && x.top == y.top) {
var foo = jQuery(img);
foo.detach();
return;
}

Но не работает. Элемент1 я создаю с помощью скрипта:
var pay = document.createElement('img');
pay.src='trap.jpg'
pay.id='create'
document.documentElement.appendChild(pay);
Многое перепробовал уже, но не получается. Надеюсь разъяснил свою проблему понятно. Подскажите, пожалуйста, в чем проблема и как ее решить.
  • Вопрос задан
  • 2537 просмотров
Решения вопроса 1
barkalov
@barkalov
Способ адски неправильный, но по идее работать должен (разве что проверять стоит не x.left == y.left, а Math.abs(x.left - y.left) < delta). Если не работает, смотрите в дебагер, что там у вас в оффсетах?

Правильный способ: делать проверку на пересечение в том-же "потоке", что и анимация. Если анимируете с jquery - используйте коллбэк step. И кешируйте координаты в переменных (когда анимируете), не надо каждый раз вызывать .offset.
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
madmages
@madmages
Человек прямоходящий
как я вас понял, у вас не остается вариантов как только на каждый тик анимации просчитывать все точки по периметру обоих элементов и ловить общие точки, и это при каждом тике. тяжковато получится
Ответ написан
iiil
@iiil
Инженер и вэб-дизайнер, рисую.
Если элемент движется только по оси Y, то Вы можете для начала проверять координату по X, и если они не совпадают — проверять координату по Y уже не надо.
А так, Вам хороший совет дал @barkalov. Вы относитесь к анимации так, как будто не Вы задаете ей такое поведение.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы