![]() |
|
||||||||||
|
|||||
|
Регистрация: Sep 2009
Сообщений: 68
|
От нефига делать (и от желания отточить скил) начал писать казуальную игрушкку типа "Танчики"
Итак, есть базовый класс WarMachine - это шаблон танка, при клике на стейдж внутри этого класса генерится объект типа Boolet, пуля которая меняет коородинаты на EnterFrame, и аттачится на главный стейдж. Посему вопросы: 1) Щас лиснер на клик аттачится на стейдже (выстрел). Можно ли зааттачить его внутри самого WarMachine? Пробовал через root.stage - не помогло 2) На стейдже лежит мувик booletContainer, в который надо складывать пули. Как к нему добратся их WarMachine? root.stage.addChild(b) работает, а root.stage.booletContainer.addChild(b) - нет 3) Сделал выстрел по нажатию пробела, тот способ что и с управлением через булевы переменные, где управление стрелками реализовано. Оно конечно работает, но поскольку висит на EnterFrame то пули вылетают пачками и надо очень коротко нажимать. Можно как-то это сделать попроще обрабатывать и назначать как с тем же Mouse Click? |
|
|||||
|
Регистрация: Jan 2003
Адрес: Latvia, Riga
Сообщений: 161
|
1) В базовом классе WarMachine, создайте статичную переменную и при инициализации главного класс присвойте в эту статичную переменную ссылку на stage, и потом из любого класса сможете обратиться к stage.
public static var STAGE:Stage; public function WarMachine():void { if (stage) init(); else addEventListener(Event.ADDED_TO_STAGE, init); } private function init(e:Event = null):void { STAGE = this.stage } Последний раз редактировалось RaVeN-Nikma; 11.07.2011 в 18:24. |
|
|||||
|
блогер
Регистрация: Oct 2005
Адрес: Днепродзержинск - город Брежнева и других логопедов
Сообщений: 1,421
Записей в блоге: 4
|
1) да. У каждого display object'a, находящегося на сцене есть stage (код выше решает эту проблему симпатичнее, кстати, рекомендую).
2) Как-то передать WarMachine ссылку на booletContainer (bullet - правильно). Ну или дать возможность её достать =) Думаю передача параметром в конструктор тут - не криво совсем. 3) Ну можно на KEY_DOWN повесить. Можно смотреть, сколько с прошлого выстрела прошло. Как пан пожелает) PS: танчики - неказуальны. Казуалки на казуальных порталах и флешки на флеш порталах - разные вещи. Чисто терминологическая поправка %)
__________________
Бобры отвечают на вопросы не потому, что знают на них ответы; они отвечают потому, что их спрашивают. |
|
|||||
|
Регистрация: Jan 2003
Адрес: Latvia, Riga
Сообщений: 161
|
2) Зависит от того как booletContainer добавляется на stage. Если через addChild, то дайте этому контейнеру name = "booletContainer" и обращайтесь к нему
|
|
|||||
|
блогер
Регистрация: Oct 2005
Адрес: Днепродзержинск - город Брежнева и других логопедов
Сообщений: 1,421
Записей в блоге: 4
|
Если для точения скилла, а не быстро накидать, посмотреть и забыть, то про getChildByName - забыть.
__________________
Бобры отвечают на вопросы не потому, что знают на них ответы; они отвечают потому, что их спрашивают. |
|
|||||
|
Регистрация: Jan 2003
Адрес: Latvia, Riga
Сообщений: 161
|
Если контейнер один и добавляется всего раз на сцену, то просто запомните ссылку и обращайтесь через нее, можно даже сделать ее статичной (смотрите пример выше)
-De- - ну ты критикан =) |
|
|||||
|
Et cetera
Регистрация: Sep 2002
Сообщений: 30,787
|
Сам по себе getChildByName не вреден. Вреден он в конкретно данном случае, но менее вреден, чем вариант со статическим stage.
|
|
|||||
|
Регистрация: Jan 2003
Адрес: Latvia, Riga
Сообщений: 161
|
Чем вреден статический Stage?
избавляет от множества проблем во внутренних классах, если надо вешать лисенеры MouseEvent (как бонус) Последний раз редактировалось RaVeN-Nikma; 11.07.2011 в 19:31. |
|
|||||
|
Et cetera
Регистрация: Sep 2002
Сообщений: 30,787
|
Ну и слушайте MouseEvent, когда вы находитесь на stage. Если не находитесь, нечего слушать.
|
|
|||||
|
Регистрация: Jan 2003
Адрес: Latvia, Riga
Сообщений: 161
|
Частая ситуация, делаешь скроллер и нужно отрабатывать stopDrag(); когда срабатывает событие MouseEvent.MOUSE_UP, нужен глобальный MOUSE_UP, а не над объектом
И все же Вы не объяснили чем плох статичный stage, кроме как то что он плох. Есть ли какие-нибудь причины почему так нельзя делать, не касающиеся стиля программирования. П.С. Stage существует всегда, хранить поинтер на постоянно существующий объект признак грамотного программирования, я так считаю... Последний раз редактировалось RaVeN-Nikma; 11.07.2011 в 19:59. |
![]() |
![]() |
Часовой пояс GMT +4, время: 22:51. |
|
|
« Предыдущая тема | Следующая тема » |
|
|