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() {

        }
    }
}

Я бы предположил, что приведенный выше код будет выполняться следующим образом:

  1. нагрузка Application класс, так как это "основной исполняемый файл".
  2. нагрузка MyStaticLibrary а также MyWorkerвыполняя любые статические блоки в них.
  3. Выполнить статические блоки внутри Application,
  4. Позвоните конструктору и начните работу.

Кто-нибудь знает, правда это или нет? Я думаю, что я буду создавать приложение, чтобы проверить все это в то же время:)

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

Другие вопросы по тегам