Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 1.0/2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=93)
-   -   Как, кроме hitTest-а, можно обнаруживать перекрытия мувиклипов? (http://www.flasher.ru/forum/showthread.php?t=112935)

orcpochta 12.06.2008 19:46

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

Понятно, что про окружности - это только пример и можно мерить их радиусы и расстояние между центрами, но как быть, если это, например, звездочки или другие сложные фигуры? тут уже математическими методами так просто не замерить...

2Модератор: Не знаю как еще правильно сформулировать вопрос, чтобы тему не закрыли.

Fernando Costa 12.06.2008 19:56

можно BitmapData-ой, только будет ресурсоемко, можно на края звездочки повесить мувиклипы в один пиксель и хитТест поверять с ними

Psycho Tiger 12.06.2008 20:24

Сложными - но они того стоят (вспомни N)
Перевод от Нокса Нокитса:
http://noregret.org/tutor/n/collision/

Роман Вадимович 12.06.2008 20:33

hitTest кстати позволяет определить пересечение объекта и точки.
Может существует возможность принять второй объект за точку?
Это хорошо подходит в случае мишени и пули.

Psycho Tiger 12.06.2008 20:45

Ага, а ещё можно делать так:
Идем от вершины мувиклипа до его конца по каждому _х.
Нашли пересечение - добавляем точку в массив.
Аналогично снизу вверх, слева-направо,справа-налево.
После проверяем все точки, что в масиве на пересечение с другим мувиклипом.
Можно обойтись и без масива, это для наглядности сдесь вставил)

orcpochta 13.06.2008 00:38

Цитата:

Сообщение от Роман Вадимович (Сообщение 745305)
hitTest кстати позволяет определить пересечение объекта и точки.
Может существует возможность принять второй объект за точку?
Это хорошо подходит в случае мишени и пули.

я это упомянул в вопросе..))
Цитата:

hitTest проверяет только ограничивающие прямоугольники (если не рассматривать вариант поточечного хит-тестирования)
Цитата:

Сообщение от Fernando Costa (Сообщение 745296)
можно на края звездочки повесить мувиклипы в один пиксель и хитТест поверять с ними

звездочка - это всего-лишь пример, а как быть, если фигуры трансформируются во времени?

Цитата:

Сообщение от Psycho Tiger (Сообщение 745310)
Ага, а ещё можно делать так:
Идем от вершины мувиклипа до его конца по каждому _х.
Нашли пересечение - добавляем точку в массив.
Аналогично снизу вверх, слева-направо,справа-налево.
После проверяем все точки, что в масиве на пересечение с другим мувиклипом.
Можно обойтись и без масива, это для наглядности сдесь вставил)


это сколько же точек получится?..)) комп умрет на проверке всех точек..))

Psycho Tiger 13.06.2008 14:15

Когда то кто то делал на ас1 подобное, 1 фигурка таскается, другая не подвижная. Не тормозило. Не обязательно ведь сдвигаться на 1 пискель, можно сразу на 5 :)

orcpochta 13.06.2008 22:55

Цитата:

Сообщение от Psycho Tiger (Сообщение 745394)
Когда то кто то делал на ас1 подобное, 1 фигурка таскается, другая не подвижная. Не тормозило. Не обязательно ведь сдвигаться на 1 пискель, можно сразу на 5 :)

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

Psycho Tiger 15.06.2008 10:55

Я и говорю - простор для полета воображения :)
В итоге можно получить достаточно быстродейственный алгоритм перекрытия 2 совершенно произвольных фигур.
Кстати, в принципе любую фигуру можно описать кривыми безье, Иван Дембицкий как раз пишет класс для этого.


Часовой пояс GMT +4, время: 00:56.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.