2010-03-26 2 views
1

С флэш-памятью можно определить, полностью ли объект находится поверх другого? . У меня есть прямоугольник (поверхность пола) и круг (мебель).

Теперь я хочу определить, полностью ли круг находится в (= над) прямоугольником, а не только, попадает ли он в прямоугольник где-то. Это возможно ? Как ?Область обнаружения фотовспышки

ответ

2

Sure:

function testOverlap(large:DisplayObject, small:DisplayObject):Boolean { 
    return large.getBounds(stage).containsRect(small.getBounds(stage)); 
} 

Другими словами, получить ограничивающей прямоугольник большого объекта, и использовать Rectangle.containsRect, чтобы увидеть, если она содержит границы прямоугольника малого объекта.

0

Я использовал библиотеку обнаружения столкновений видели здесь: http://www.tink.ws/blog/as-30-hittest/

Функция обнаружения столкновения возвращает вам объект flash.geom.Rectangle, представляющий пересекающиеся границы 2 объектов ударяя друг друг. Вы можете использовать его для достижения того, чего хотите, указав ширину и высоту Rectangle на ширину и высоту вашего круга, если они соответствуют кругу, полностью над прямоугольником.

2

Или без необходимости иметь дело с новым кодом, если ваше приложение достаточно просто, вы можете использовать решение, как показано на этой схеме:

alt text http://www.andrewwalpole.com/hitsolution.gif

Имея отдельный хит объект области, который меньше пол гарантирует, что вы получите только удар, когда круг будет полностью перекрыт.

+0

+1. очень приятно :) – back2dos

+0

Приятная идея, но для проверки каждой пары объектов вам понадобится дополнительный невидимый тестовый объект. Не общее решение;) – fenomas

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