Область обнаружения попадания вспышки - PullRequest
1 голос
/ 26 марта 2010

Можно ли с помощью Flash определить, находится ли объект полностью поверх другого? Например. У меня есть прямоугольник (поверхность пола) и круг (мебель).

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

Ответы [ 3 ]

2 голосов
/ 26 марта 2010

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

альтернативный текст http://www.andrewwalpole.com/hitsolution.gif

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

2 голосов
/ 27 марта 2010

Sure:

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

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

0 голосов
/ 26 марта 2010

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...