AS3 - Проблема класса загрузчика при трассировке SWF (класс документа) - PullRequest
0 голосов
/ 12 октября 2010

Я использую класс Loader для загрузки 3 внешних swfs:

  1. sharedTopics.swf (не имеет класса документа)
  2. fonts.swf (класс документа - FontManager)
  3. main.swf (класс документа Main)

Один и тот же загрузчик используется для загрузки всех 3 ресурсов.

__assetLoader = new Loader(); 
var urlReq:URLRequest = new URLRequest(target.path);
__assetLoader.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS, this.preloadProgress);
__assetLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, this.assetCompleteHandler); 
__assetLoader.contentLoaderInfo.addEventListener(Event.INIT, this.assetInitHandler); 
__assetLoader.load(urlReq);

В полном обработчике Iдобавьте содержимое загрузчика в фрагмент ролика и затем отследите переменную:

var swf:DisplayObject = __assetLoader.content;
Debug.doTrace("Shell:: assetCompleteHandler():: content " + swf);
__app.addChild(MovieClip(swf));

Когда загружены sharedTopics, шрифты и основные swfs (соответственно), я получаю следующие операторы трассировки:

Shell:: assetInitHandler():: evt.currentTarget.content [object MovieClip]
Shell:: assetInitHandler():: evt.currentTarget.content [object FontManager]
Shell:: assetInitHandler():: evt.currentTarget.content [object Main__Preloader__]

Я ожидаю, что последний оператор трассировки будет выглядеть как «[объект Main]», который, однако, будет именем класса документа, вместо этого содержимое является загрузчиком.Любые идеи относительно того, почему это происходит?

В более поздней функции я пытаюсь вызвать функцию init класса Main и получаю следующую ошибку:

Error #1069: Property init not found on classes.Main__Preloader__ and there is no default value.

Я надеюсь, что это объясненоясно.

Заранее спасибо,

Майк

Ответы [ 2 ]

3 голосов
/ 13 октября 2010

Виновной была TLFTextField. По умолчанию в CS5 элементы «Путь к библиотеке» (в разделе «Параметры ActionScript3.0> Путь к библиотеке») задаются как «Общие библиотеки времени выполнения» и используют предварительный загрузчик по умолчанию, поэтому путем изменения «Связывание по умолчанию» на «Объединить в код» вам не нужно беспокоиться о внешней загрузке этих библиотек ...

0 голосов
/ 13 октября 2010

Похоже, что main.swf не был предназначен для косвенной загрузки, как вы пытались это сделать. Зех имеет точку зрения, Мейн может быть ребенком SWF ...
Если это так (и похоже, что так и есть), вы должны взглянуть на Main.as, найти экземпляр Main_Preloader и получить URL-адрес, который он загружает, и загрузить его вместо этого ... или попытаться просто обойти Main_Preloader или / и заново реализовать его в вашем классе AssetLoading.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...