Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Работа в классе со своими же экземплярами (http://www.flasher.ru/forum/showthread.php?t=179563)

Tetraeon 17.05.2012 10:50

Работа в классе со своими же экземплярами
 
Вопрос, как в классе задать функцию которая заставляла бы объекты данного класса и всех подклассов избегать встречи друг с другом на сцене, например при сокращении дистанции друг с другом ближе чем на 30 пикселей 1 объект отдалялся бы от другого. (что бы враги друг в друге не стояли) Не представляю как обратится к самим себе во множественном виде.

Deimos747 17.05.2012 11:09

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

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

Tetraeon 17.05.2012 11:15

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

ЗлОй ПрОграММер 17.05.2012 11:31

Исходники я свои к сожалению потерял, но скажу как бы делал сам:
1. Ищете в просторах сети демку где какой либо объект движется за курсором мыши, таких думаю полно демок и изучаете код
2. Добавляете все ваши объекты в массив и на сцену
3. Пробегаете по массиву и определяете дистанцию между каждыми 2 объектами(что то подобное должно быть в демке из пункта 1)
4. Если расстояние меньше 30 пикселей, то опять же обращаетесь к коду демки из пункта 1(и делаете удаление объектов друг от друга)

Tetraeon 17.05.2012 11:50

По началу я добавлял все эти объекты в массив давая им Instance Name, но когда я понял что если не давать им имена и просто вытаскивать на сцену то можно ими управлять не добавляя в массив.. этот вариант я оставил т.к. он меньше грузит комп. Вот почему я хочу узнать как обратится к своим экземплярам прямо в классе... у них нет имен, они просто стоят на сцене, так я не смогу добавить их в массив.

ЗлОй ПрОграММер 17.05.2012 20:05

Статичный массив делайте в классе, и уже в него добавляйте экземпляр
Если не прав пусть кто нибудь поправит! сам такого не делал

Партизан 17.05.2012 20:36

Статичный массив. Я бы разбил поле на квадраты равные примерно минимальному расстоянию между объектами, ну или что-то вроде того. Далее при перемещении или добавлении объекта сверялся с занятостью этих квадратов, а там уже можно и развести объекты по свободным к примеру соседним.

stweet 17.05.2012 21:36

есть такой ответ.


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

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