JavaScript: запуск функции, когда два деления касаются / перекрываются - PullRequest
1 голос
/ 01 декабря 2009

Название действительно объясняет это. Как это сделать? Оба div имеют разный размер. Оба div движутся (я делаю небольшую игру Jquery). Если один ударит другого, я хочу, чтобы что-то произошло.

Спасибо

Ответы [ 2 ]

3 голосов
/ 01 декабря 2009

Нет события JavaScript для onOverlap, вам нужно вычислить, перекрывают ли div сами:

var valueInRange = function(value,min, max) { 
   return (value >= min) && (value <= max);
}

var overlap = function(x1,y1,w1,h1,x2,y2,w2,h2) {
   xOverlap = valueInRange(x1, x2, x2 + w2) || valueInRange(x2, x1, x1 + w1);
   yOverlap = valueInRange(y1, y2, y2 + h2) || valueInRange(y2, y1, y1 + h1);
   return xOverlap && yOverlap;
}
1 голос
/ 01 декабря 2009

Как вы заставляете дивы двигаться?Конечно, один из способов сделать это - написать простую функцию, возвращающую логическое значение, которая с учетом двух элементов div определяет, перекрываются ли они (получить координаты углов и просто сравнить для пересечения).Затем в конце функции, которая вызывает перемещение элементов div, вызовите эту функцию и при необходимости выполните соответствующее действие.

Фактически, в зависимости от того, как вы выполняете перемещение, вы можете даже иметь координаты обоихДоступность div'ов делает это очень эффективным.

Кроме того, я не знаю ни о каком событии onoverlap или подобном, поэтому периодическая проверка - единственный общеприменимый способ, который я могу придумать.В зависимости от структуры вашего кода возможен более быстрый метод.

...