PDA

Просмотр полной версии : обнаружение класса


ЗлОй ПрОграММер
13.01.2011, 12:51
Есть два класса, как сделать так чтобы если экземпляр первого класса попадал в зону видимости второго класса, то выводились бы его координаты(зона видимости радиус)

КорДум
13.01.2011, 13:54
Так простая математика.
var dx:int = mc2.x - mc1.x;
var dy:int = mc2.y - mc1.y;

if (Math.sqrt(dx*dx + dy*dy) < 15) {
trace(mc1.x, mc1.y);
}
Все это по enterFrame проверяется или по таймеру, как угодно.

passertm
13.01.2011, 14:14
А что за клас?
Он круглый, квадратный? Вероятнее всего придется сделать хит тестом если он сложной формы или форма меняется.

ЗлОй ПрОграММер
13.01.2011, 14:30
класс сложной формы, насчёт хит теста почитаю.
КорДум, а как быть если имена экземпляров неизвестны ?
канешно можно вбить все экземпляры в массив и проверять их по очереди(находятся ли они в зоне видимости), а нет другого способа ?

КорДум
13.01.2011, 14:32
КорДум, а как быть если имена экземпляров неизвестны ?
Тогда вы неправильно проектируете код ;)
Вам поможет метод сетки. Прочтите вот здесь: http://www.flasher.ru/forum/showthread.php?t=83431

ЗлОй ПрОграММер
13.01.2011, 14:41
а как сделать такой класс который бы показывал какие экземпляры и каких классов находяться на сцене и сколько их ?? это помогло б мне написать свой код, статью почитаю)

КорДум
13.01.2011, 14:45
При создании объекта закидывайте его в массив. При уничтожении - убивайте запись о нем из массива. Ну можете оформить это дело в класс, скажем, DispatcherObject с паблик методами добавления и удаления.

ЗлОй ПрОграММер
13.01.2011, 14:46
за статью спасибо, как раз похожую игру пытаюсь сделать ))

Nemez
13.01.2011, 15:00
Вероятнее всего придется сделать хит тестом если он сложной формы или форма меняется.
По-моему, hitTestObject реагирует как раз на прямоугольник, в который вписана фигура любой сложности.

passertm
13.01.2011, 15:15
Я с ним давно работал. Но кажется мне там есть параметр который указывает реагировать на прямоугольник или именно в фигуру.

Вот подумалось. все обьекты с которыми нужно проверить касание можно собрать в один спрайт и проверять HitTest с этим спрайтом. но думаю стоит посмотреть в линке который дал КорДум.
Думаю там есть более практичные решения.

КорДум
13.01.2011, 15:29
Но кажется мне там есть параметр который указывает реагировать на прямоугольник или именно в фигуру.
hitTestPoint