2013-05-08 7 views
0

У меня есть «Question.swf», который был создан из «Question.fla». Обратите внимание, что Question.fla не имеет связанного с ним класса документа. (Обратите внимание, что это устаревшее содержимое, и существует более 14 000 вариантов «Question.swf», изменение которых не является жизнеспособным вариантом.)AS3: Как создать экземпляр класса «Document Class» (MainTimeline?) Загруженного SWF?

Теперь у меня есть мое основное приложение Flash, которое загружается в Question.swf на во время выполнения. Я знаю, что у Question.swf автоматически создается «Класс документа», который представляет весь «этап» SWF (и называется «MainTimeline»). Я хочу, чтобы это приложение могло создавать несколько экземпляров этого класса Document.swf Document ... как я могу?

Я работаю с Flash/AS3 с 2006 года (я очень хорошо знаком с загрузкой/использованием внешнего контента, ApplicationDomain и т. Д.), Но я считаю, что я понятия не имею, как это сделать!

Вещи, которые не были обработаны, включают запрос к соответствующему ApplicationDomain с hasDefinition («Question_fla.MainTimeline») - это возвращает false - а также запуск getQualifiedClassName() на моем объекте loader.content - это просто возвращает Видеоклип.

+0

Не уверен, что понял, но насколько мне известно, класс документа загруженного SWF автоматически определяется при загрузке. – RafH

+0

Это правильно, но я бы хотел создать экземпляр SECOND этого класса. (И третий, и четвертый.) Я предположил, что мой объект loader.content является экземпляром этого класса, но если это так, ни getQualifiedClassName(), либо describeType() не признают, что (оба они сообщают, что это MovieClip). – IQpierce

ответ

1

Я не уверен, как дублировать основное содержимое загрузчика. Тем не менее, разумный обходной путь может быть один раз загрузить SWF байт и создать несколько погрузчиков из этих байтов:

  1. Загрузите SWF байты с URLLoader:

    var urlloader : URLLoader = new URLLoader(); 
    urlloader.load(new URLRequest("your url here")); 
    
  2. После того, как он будет загружен, использование байты для создания экземпляра новых экранных объектов:

    var loader : Loader = new Loader(); 
    loader.loadBytes(urlloader.bytes); 
    
  3. Используйте экранный объект Loader.content вашего загруженного загрузчика в списке отображения (или сам загрузчик).

+0

Это, кажется, самый близкий способ сделать то, что я хочу - странно, что нет другого способа создать экземпляр этого класса. Спасибо, Джон! – IQpierce