![]() |
Конструктор главного класса приложения
Всем доброго времени суток!
Я заметил, что во многих туториалах по AS3 избегают проводить всю необходимую инициализацию в конструкторе главного класса приложения. Вместо этого создают отдельную функцию и вызывают ее по наступлению события ADDED_TO_STAGE. Почему? Flash Develop вообще по-умолчанию генерирует такой код: Код AS3:
Я всегда всю инициализации проводил в конструкторе и проблем не было... |
Цитата:
Цитата:
|
Цитата:
загружать данную флешку внутрь другой, то можно всю инициализацию в конструктор пихать? Цитата:
|
Если ты не планируешь проверять наличие stage в конструкторе с последующим алертом типа "ай-ай-ай!!!", то можно опустить этот блок и производить инициализацию прямо в конструкторе. Главное не отвыкнуть от хорошего и не делать так в других классах отображения.
|
Понятно. Спасибо.
Правильно ли я понял, что лучше вообще всю инициализацию из конструкторов выносить, потому что их код не кешируется? т.е. всегда лучше написать покрайней мере так: Код AS3:
|
SmartFox, вы не уловили суть. Нужно убедиться, что stage доступен и уже после этого запускать основной код.
|
Цитата:
|
прошу не путать грешное с праведным.
Стейдж экземпляр получает тогда когда добавлен на сцену. если быть точным после выполнения комманды Код AS3:
|
AlexCooper. Есть частный случай. В primary документ-классе, который является корневым, stage доступен в конструкторе.
|
Пример
Код AS3:
Код AS3:
Цитата:
Код AS3:
|
Та не! У него в конструкторе уже есть стейдж. Объект еще не создан, но уже добавлен на сцену, вот что вызывает уважение к уличной магии!
|
Вот опять запутали! Если в primary документ-классе, который является корневым, stage доступен в конструкторе, то зачем там танцы с эвентами? Только на случай загрузки одной флешки в другую?
|
Главное запомнить то что stage доступен только тогда когда экземпляр добавлен на сцену. В случае с главным документ-классом он добавлен на сцену автоматически. В вложенных классах использовать ADDED_TO_STAGE нужно для передачи всех параметров. К примеру если вы передаете различные параметры (как пример цвет текста, сам текст, ссылки на картинки) и во время инициализации вам эти параметры нужны. Методом init вы конролируете что будет собран весь спектр параметров и полная инициализация будет произведена выполнением команды
Код AS3:
ну и соответственно непосредственно следует использовать когда нужен безотказный вызов Код AS3:
|
Цитата:
|
Цитата:
|
КорДум, это тоже полезная для меня инфа. Спасибо. Я обычно инициализацию всяких пуль и обломков, которых создается множество, прямо в конструкторе делал(ну т.е. задавал им скорости, ускорения и прочее), а оказывается лучше было из конструктора вынести в отдельную функцию. Кстати, в AS2 тоже так было?
Честно говоря странно это немножко. Во всяком случае после С++. Конструкторы-то как раз и придуманы, что в них инициализацию проводить... |
Это верно, и никто Вас не заставляет выносить инициализацию за конструктор. Дело лишь в доступе к сцене. Если она Вам нужна, тогда лучше вынести если stage вам безразличен или вас не смущает запись типа
Код AS3:
Код AS3:
Код AS3:
p.s. все дело в параметрах которые Вам нужны. Отталкиваться нужно от задачи которую выполняет класс, нужен ли там ADDED_TO_STAGE или нет зависит только от этого. |
Цитата:
Цитата:
|
Цитата:
|
Димарик, Ваш выход )
Я лишь пользовался тем, что скромно одним глазком подсмотрено у наших гуру. |
|
| Часовой пояс GMT +4, время: 10:52. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.