PDA

Просмотр полной версии : Проверка пересечения экранных объектов


art_maestro
19.10.2013, 18:26
Здравствуйте.

Подскажите как решить такую задачу. Есть два мувика мув1 и мув2. разного размера мув1>мув2.

Вопрос в следующем: передвигаем мув2 на мув1, как проверить, вошел ли мув2 в область мув1.

Я делал с координатами, но я думаю есть более простой способ, может какая-то функция, пожалуйста подскажите.

Спасибо.

Tails
19.10.2013, 19:36
hitTestObject (http://help.adobe.com/ru_RU/FlashPlatform/reference/actionscript/3/flash/display/DisplayObject.html?filter_flex=4.1&filter_flashplayer=10.2&filter_air=2.6#hitTestObject())

KumoKairo
19.10.2013, 19:58
На самом деле иногда и с координатами приходится делать, например если известно заранее, что мувики круглые. Тогда хит тест методы будут "промахиваться", поскольку они используют прямоугольные рамки объектов.
Есть еще pixel-perfect способ, когда проверяется столкновение непрозрачных пикселей объекта с :
1. Точкой.
2. Другим объектом с прозрачными пикселями.

Первый способ в AS3 можно реализовать с помощью hitTestPoint (http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/display/DisplayObject.html#hitTestPoint%28%29) c выставленным флагом shapeFlag в true. Это относительно легковесный и нетребовательный к производительности метод.

Второй случай, когда требуется определить пересечение двух сложных объектов, нативно не реализован (насколько помню), но в инете полно библиотек для этого. (эта например) (http://www.freeactionscript.com/2011/08/as3-pixel-perfect-collision-detection/)
Но за эту точность придется расплачиваться процессорным временем, поскольку это более трудоемкая задача.

Поэтому чаще всего разумнее использовать .hitTestObject или .hitTestPoint

Еще где-то были методы, проверяеющие столкновение объекта с любым другим объектом (мы не знаем заранее с каким столкнемся), но я настолько "отстал от жизни" что не помню, есть ли этот метод в нативном варианте или нет.

art_maestro
19.10.2013, 21:38
Спасибо ребята! Буду пробовать.