AS3: порядок загрузки классов
У меня был быстрый вопрос по статическим блокам в AS3.
У меня есть библиотека, которая требует статической инициализации перед выполнением любой логики приложения. Если я вставлю статический блок кода, как показано ниже, будет ли он действительно выполняться раньше всего? (то есть: безопасно ли предположить, что все будет настроено до запуска приложения?)
package {
import com.tkassembled.library.MyStaticLibrary;
import com.tkassembled.library.MyWorker;
import flash.display.Sprite;
public class Application extends Sprite {
// begin static code
/* initialize */ {
MyStaticLibrary.worker = new MyWorker();
}
public function Application() {
}
}
}
Я бы предположил, что приведенный выше код будет выполняться следующим образом:
- нагрузка
Application
класс, так как это "основной исполняемый файл". - нагрузка
MyStaticLibrary
а такжеMyWorker
выполняя любые статические блоки в них. - Выполнить статические блоки внутри
Application
, - Позвоните конструктору и начните работу.
Кто-нибудь знает, правда это или нет? Я думаю, что я буду создавать приложение, чтобы проверить все это в то же время:)
1 ответ
Решение
Сделал домашнее задание, вот заказ на выполнение:
[16] Application static block executed.
[16] MyLibrary static blocks invoked.
[16] MyWorker static blocks
[16] MyWorker constructor called.
[16] MyLibrary.worker set.
[17] Application constructor executed.
Это действительно помогает понять, как все работает:)
Вы можете получить мои экспериментальные файлы здесь: http://bit.ly/aKwqp6