AS3 Проблема при загрузке внешнего SWF в загрузчик - PullRequest
1 голос
/ 17 марта 2011

У меня есть основное приложение, которое загружает внешние SWF-файлы через компонент Loader. Но некоторые SWF, которые работают хорошо сами по себе, не загружаются в основное приложение. Когда я попытался загрузить один из этих SWF-файлов из fla основного приложения, он выдал ошибку, что он ищет некоторые классы. По названию этих классов это выглядит как часть загруженного SWF, но как SWF, который уже скомпилирован и работает хорошо, почему он ищет этот класс, когда пытается загрузить основное приложение?

Я не нашел ничего, что касалось бы такого рода проблемы. Любая помощь будет высоко оценена.

Ответы [ 2 ]

1 голос
/ 13 июня 2011

Похоже, вы столкнулись с конфликтом доменов приложений.Это может произойти, если в каждом SWF-файле есть конфликтующие имена классов (например, swf1 имеет класс с именем Main, а swf2 также имеет класс с именем Main).

Чтобы исправить это, загрузите SWF-файлы в новый домен приложения:

loader.load(new URLRequest("g.swf"), new LoaderContext(false, new ApplicationDomain(ApplicationDomain.currentDomain)));

Если это не так, скорее всего, у вас есть код в первом кадре фильма, который выполняется при инициализации SWF-файла (посмотрите, получите ли вы Event.INIT, прежде чем получите Event.COMPLETE).

Это можно легко исправить, удалив код из рамки.

0 голосов
/ 17 марта 2011

Просто для проверки я создал fla-файл, который содержал только компонент Loader и код загрузки:

var loader:Loader = new Loader();
addChild(loader);
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, loadingFunc);
loader.load(new URLRequest("g.swf"));

function loadingFunc(event:Event):void{
    var li:LoaderInfo = event.target as LoaderInfo;
    var mc:MovieClip = MovieClip(li.content)
}

Этот код взят из файла тестирования.Но даже в этом случае он по-прежнему ищет какой-то класс, который кажется одним из внешних загруженных SWF.Ошибка такова:

Ошибка типа: Ошибка # 1009: Невозможно получить доступ к свойству или методу пустой ссылки на объект.в src :: Dedo () в src :: Main ()

У меня нет таких классов в моем основном приложении.Так что это могут быть только классы из внешнего SWF.

...