2013-12-06 2 views
0

У меня проблема в моем коде, я могу переместить красный (квадрат1), щелкнув по нему, что я хочу сделать, это обнаружить столкновение, когда красный коснется синий. Я хочу, чтобы изменить цвет, когда происходит столкновение ...Обнаружение столкновений между двумя квадратами в javascript

Вот мой код, чтобы быть более ясным: http://jsbin.com/iFAlIyIv/4/edit

+2

возможно дубликат [Столкновения Javascript между двумя квадратами] (http://stackoverflow.com/questions/20283616/collisions-javascript-between-two-squares) – Tibos

+0

Нет, это еще одна проблема ... – user3048878

+0

Ну, вопрос, который я связал (который вы попросили и теперь убрал), содержал совершенно хороший ответ о том, как обнаружить столкновение. Чтобы изменить цвет, вы можете просто сделать 'square1.style.backgroundColor = '# FFFF00'' // желтый. – Tibos

ответ

1

Ваш основной подход был прав, проблемы были такие вещи, как это:

  • Вместо square1.left, вы хотите square1.offsetLeft. Элементы не имеют свойства left. То же самое касается top, width и height.

  • Вместо document.getElementById("square2") вам нужно выбрать элемент по имени класса, так как нет элемента с этим идентификатором (только элемент с этим классом).

  • Вы звоните changecouleur, но вы, вероятно, хотели бы позвонить colorswap. Похож на немного незавершенного рефакторинга.

Вы также не нужны какие-либо из дополнительных проверок после этого:

if (bl > ar || br < al) { 
    return false; 
} //overlap not possible 
if (bt > ab || bb < at) { 
    return false; 
} //overlap not possible 

Если ни одно из этих условий истинно, то они должны перекрывать друг друга.

http://jsbin.com/iFAlIyIv/13/edit

Смежные вопросы