AS3: Как создать универсальный "Класс документа" (MainTimeline?) Загруженного SWF?

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

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

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

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

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

Другие вопросы по тегам