AS3: Как создать экземпляр универсального «Класса документа» (MainTimeline?) Загруженного SWF?

У меня есть «Question.swf», который был создан из «Question.fla». Обратите внимание, что Question.fla не имеет связанного с ним класса документа. (Обратите внимание, что это устаревший контент, и существует более 14 000 вариантов "Question.swf"; изменение всего этого не является жизнеспособным вариантом.)

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

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

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


person IQpierce    schedule 08.05.2013    source источник
comment
Не уверен, что хорошо понимаю, но, насколько мне известно, класс документа загруженного SWF автоматически создается при загрузке.   -  person RafH    schedule 09.05.2013
comment
Это правильно, но я хотел бы создать ВТОРОЙ экземпляр этого класса. (И третий, и четвертый.) Я предположил, что мой объект loader.content был экземпляром этого класса, но если это так, ни getQualifiedClassName (), ни описатьType () не подтверждают это (они оба сообщают, что это MovieClip).   -  person IQpierce    schedule 09.05.2013


Ответы (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 в списке отображения (или в самом загрузчике).

person John Watson    schedule 08.05.2013
comment
Это кажется наиболее близким из возможных способов сделать то, что я хочу - странно, что нет другого способа создать экземпляр этого класса. Спасибо, Джон! - person IQpierce; 06.06.2013