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