![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|||||
|
Регистрация: Jun 2010
Сообщений: 22
|
Всем доброго времени суток!
Я заметил, что во многих туториалах по AS3 избегают проводить всю необходимую инициализацию в конструкторе главного класса приложения. Вместо этого создают отдельную функцию и вызывают ее по наступлению события ADDED_TO_STAGE. Почему? Flash Develop вообще по-умолчанию генерирует такой код: Т.е., как я понимаю, объект stage может еще не существовать к моменту создания объекта нашего класса? Я всегда всю инициализации проводил в конструкторе и проблем не было... |
|
|||||
|
Цитата:
Цитата:
__________________
тут я |
|
|||||
|
Регистрация: Jun 2010
Сообщений: 22
|
Мм... т.е. если я не использую обращение к stage в коде инициализации или если я не планирую
загружать данную флешку внутрь другой, то можно всю инициализацию в конструктор пихать? Но встречается-то он всего один раз! Это же основной класс и создается всего один его объект. |
|
|||||
|
Lorem ipsum
|
Если ты не планируешь проверять наличие stage в конструкторе с последующим алертом типа "ай-ай-ай!!!", то можно опустить этот блок и производить инициализацию прямо в конструкторе. Главное не отвыкнуть от хорошего и не делать так в других классах отображения.
__________________
Поймай яблоко 2! |
|
|||||
|
Регистрация: Jun 2010
Сообщений: 22
|
Понятно. Спасибо.
Правильно ли я понял, что лучше вообще всю инициализацию из конструкторов выносить, потому что их код не кешируется? т.е. всегда лучше написать покрайней мере так: И это будет быстрее если объекты класс ClassName создаются регулярно в процессе выполнения? |
|
|||||
|
Регистрация: Dec 2010
Адрес: Ярославль
Сообщений: 1,255
|
SmartFox, вы не уловили суть. Нужно убедиться, что stage доступен и уже после этого запускать основной код.
|
|
|||||
|
Регистрация: Jun 2010
Сообщений: 22
|
Об этом я как раз догадался по строке if (stage) init(); в коде из Flash Develop. Просто меню удивило, что среда выполнения может создать объект моего класса до того, как создала stage. Оказывается может.
|
|
|||||
|
Пример
package { public class inits { public var DATA:Number = 0; public function inits() { if (stage) init() else addEventListener(Event.ADDED_TO_STAGE, init); } private function init(e:Event):void { DATA = 1; removeEventListener(Event.ADDED_TO_STAGE, init); } } } Цитата:
__________________
return this... |
![]() |
![]() |
Часовой пояс GMT +4, время: 01:01. |
|
|
« Предыдущая тема | Следующая тема » |
|
|