AS3: порядок загрузки классов - PullRequest
0 голосов
/ 17 ноября 2010

У меня был быстрый вопрос по статическим блокам в 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 Ответ

1 голос
/ 17 ноября 2010

сделал домашнее задание, вот порядок выполнения:

[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

...