Я вижу странное поведение в отношении взаимодействий между моим предзагрузчиком и основными классами приложений (все AS3 / Flash CS4). Грубо говоря, вот поток событий:
- Preloader.swf загружает две вещи: main.swf, которое является основным приложением, и ресурсы для пользовательского объекта, состоящего из текста и изображений, которые встраиваются в объект предварительным загрузчиком из различных URL-адресов.
- Когда загрузка заканчивается, Preloader добавляет main.swf как дочерний элемент. Затем Preloader вызывает
init(myCustomObject)
для main.swf, где myCustomObject является ссылкой на объект, собранный предварительным загрузчиком на шаге 1, а public function init(customObject:CustomObject):void)
является сигнатурой метода в Main.as. (Preload.as приводит Main к объекту типа *, чтобы иметь возможность вызывать произвольные функции, не опасаясь ошибок во время компиляции.)
- Main.as на самом деле является контейнером для самого приложения, поэтому он создает экземпляр
new Application(customObject);
, передающий ссылку на customObject, собранный предварительным загрузчиком, и добавляет его как дочерний элемент.
Я установил Thunderbolt , чтобы я мог регистрировать сообщения при запуске приложения, и вот что я определил, что происходит. Создание экземпляра объекта Application в шаге 3 - это то, что вызывает проблемы; по какой-то причине, заявление
myMainApplication = new Application(customobj);
в Main.as выдает прекрасную ошибку #1009
, которая обычно указывает на нулевую ссылку на указатель или что-то подобное.
Странно то, что я добавил некоторые записи в Application.as
и, похоже, без проблем получает ссылку на customObject
; вызов toString()
в конструкторе customObject
в Application
возвращает именно ожидаемые данные.
Другими словами, утверждение myMainApplication = new Application(customobj);
в Main.as кажется успешным и неуспешным одновременно. Что дает?