![]() |
Вопросы по stage
От нефига делать (и от желания отточить скил) начал писать казуальную игрушкку типа "Танчики"
Итак, есть базовый класс WarMachine - это шаблон танка, при клике на стейдж внутри этого класса генерится объект типа Boolet, пуля которая меняет коородинаты на EnterFrame, и аттачится на главный стейдж. Посему вопросы: 1) Щас лиснер на клик аттачится на стейдже (выстрел). Можно ли зааттачить его внутри самого WarMachine? Пробовал через root.stage - не помогло 2) На стейдже лежит мувик booletContainer, в который надо складывать пули. Как к нему добратся их WarMachine? root.stage.addChild(b) работает, а root.stage.booletContainer.addChild(b) - нет 3) Сделал выстрел по нажатию пробела, тот способ что и с управлением через булевы переменные, где управление стрелками реализовано. Оно конечно работает, но поскольку висит на EnterFrame то пули вылетают пачками и надо очень коротко нажимать. Можно как-то это сделать попроще обрабатывать и назначать как с тем же Mouse Click? |
1) В базовом классе WarMachine, создайте статичную переменную и при инициализации главного класс присвойте в эту статичную переменную ссылку на stage, и потом из любого класса сможете обратиться к stage.
Код AS3:
Код AS3:
|
1) да. У каждого display object'a, находящегося на сцене есть stage (код выше решает эту проблему симпатичнее, кстати, рекомендую).
2) Как-то передать WarMachine ссылку на booletContainer (bullet - правильно). Ну или дать возможность её достать =) Думаю передача параметром в конструктор тут - не криво совсем. 3) Ну можно на KEY_DOWN повесить. Можно смотреть, сколько с прошлого выстрела прошло. Как пан пожелает) PS: танчики - неказуальны. Казуалки на казуальных порталах и флешки на флеш порталах - разные вещи. Чисто терминологическая поправка %) |
2) Зависит от того как booletContainer добавляется на stage. Если через addChild, то дайте этому контейнеру name = "booletContainer" и обращайтесь к нему
Код AS3:
|
Если для точения скилла, а не быстро накидать, посмотреть и забыть, то про getChildByName - забыть.
|
Если контейнер один и добавляется всего раз на сцену, то просто запомните ссылку и обращайтесь через нее, можно даже сделать ее статичной (смотрите пример выше)
-De- - ну ты критикан =) |
Цитата:
|
Чем вреден статический Stage?
избавляет от множества проблем во внутренних классах, если надо вешать лисенеры MouseEvent (как бонус) |
Цитата:
|
Частая ситуация, делаешь скроллер и нужно отрабатывать stopDrag(); когда срабатывает событие MouseEvent.MOUSE_UP, нужен глобальный MOUSE_UP, а не над объектом
И все же Вы не объяснили чем плох статичный stage, кроме как то что он плох. Есть ли какие-нибудь причины почему так нельзя делать, не касающиеся стиля программирования. П.С. Stage существует всегда, хранить поинтер на постоянно существующий объект признак грамотного программирования, я так считаю... |
| Часовой пояс GMT +4, время: 01:37. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.