Извлечение актива из SWF-файла? - PullRequest
1 голос
/ 22 мая 2009

Поскольку я создаю инфраструктуру Flex для мини-игр, я планирую объединить набор графических ресурсов (символов movieclip) в один файл SWF, который я загружу в свое приложение Flex, перед тем как извлечь символы из файла SWF для использовать в моем приложении. У меня такой вопрос: как мне сделать это с помощью Actionscript?

Спасибо!

Ответы [ 3 ]

1 голос
/ 22 мая 2009

Если вы не хотите использовать EMBED и не хотите загружать ресурсы во время выполнения, я рекомендую вам экспортировать SWF как SWC.

Таким образом, вы можете просматривать SWC-файлы из ActionScript. Вы можете проверить событие во время компиляции, что суб-мувиклип внутри другого мувиклипа существует.

Если вы используете гибкий компилятор, не забудьте добавить его при компиляции:

-library-path C:\path\to\your\file.swc

Если вы используете FDT, у вас есть опция автоматического добавления SWC в качестве аргументов.

Вот демонстрация о том, как это сделать с помощью FDT. Не уверен, какой инструмент вы используете. Если это коммерческий Flex Builder, процесс должен быть похожим.

Я думаю, это то, что вы ищете.

0 голосов
/ 22 мая 2009

Здесь много хороших решений, вот одно из них: если вы загружаете SWF во время выполнения и хотите извлечь ресурсы, вы можете сделать следующее в вашем обработчике событий полного загрузчика:

var c:Class = Class(LoaderInfo(e.target).applicationDomain.getDefinition("myClassDefinitionName"));

Это сохранит ресурс из swf как объект Class, чтобы вы могли создавать его экземпляры следующим образом:

var asset:MovieClip = new c();
0 голосов
/ 22 мая 2009

Я бы попытался создать AS-файл библиотеки активов / значков.

что-то вроде

package 
{

public class IconLibrary
{

    /*
    *  Framework Icons
    */

    [Embed (source="../assets/fof_graphics.swf", symbol="clapperboard_icon")]
    public static const clapperBoardIcon:Class;
    [Embed (source="../assets/fof_graphics.swf", symbol="clapperboard_over_icon")]
    public static const clapperBoardOverIcon:Class;
    [Embed (source="../assets/fof_graphics.swf", symbol="close_button")]
    public static const closeButton:Class;
    [Embed (source="../assets/fof_graphics.swf", symbol="close_over")]
    public static const closeOverButton:Class;

    public function IconLibrary()
    {
    }

  }

}

Тогда все, что вам нужно сделать, это

source="{IconLibrary.clapperBoardIcon}"

или любое другое имя актива, который вы хотите показать.

...