AS3 Упаковка внешних файлов в один автономный .swf - PullRequest
2 голосов
/ 13 июня 2011

Я создал очень масштабную флеш-игру и, по всей видимости, получил большой контроль - сайты флеш-порталов, желающие разместить мою игру, нуждаются в ней в одном .swf.Однако проблема в том, что я загружаю все извне.Я загружаю данные уровня из файлов .plist, изображений из .png и звука из .wav, все они расположены в папках в каталоге .swf.Они загружаются через Loader и URLRequest.

Можно ли как-то их встроить, чтобы он работал автономно?Желательно более простой способ, чем индивидуальное написание строк для вставки, поскольку существует 1000 файлов.

Большое спасибо!

1 Ответ

2 голосов
/ 13 июня 2011

Краткий ответ: Нет.

Длинный ответ: поскольку вы используете Loaders и URLRequests, каждый ресурс должен быть доступен как внешний запрос. Вы просите простой способ заставить их указывать на активы внутри вашего SWF, что невозможно. Однако, если вы немного измените свой рабочий процесс, вы можете найти способ, который будет приемлем с точки зрения изменений кода и принесет пользу вам в долгосрочной перспективе.

Если вы используете редактор, такой как Flash Builder, FDT, FlashDevelop или IntelliJ, вам следует изучить множество применений SWC-файлов. Вы можете установить флажок «экспортировать как SWC» в настройках публикации Flash IDE, что будет создавать SWC каждый раз, когда вы проверяете (Cmd + Enter) FLA-файл. Вы можете импортировать этот SWC-файл в выбранный вами редактор и ссылаться на любые символы вашего исходного fla-файла как классы AS3. При компиляции флэш-компилятор берет ваши исходные ресурсы и встраивает их в получившийся SWF-файл, который вы затем можете распространить на любой понравившийся веб-сайт портала. PNG и WAV самые простые, для .plist вам нужно использовать метатег [Embed(...)]. Преимущества, связанные с наличием одного SWF-файла, также заключаются в том, что вам не нужно предварительно загружать каждый отдельный актив и что все создание активов выполняется в одном потоке. Нет больше спагетти слушателей событий для загрузки активов!

Убедитесь, что вы правильно назвали свои символы и свойства связей для использования SWC. Вы можете использовать стандартный формат пакета, чтобы легко находить ваши активы, например, называть символ fla.icons.GreyLogo или fla.homepage.BackgroundGraphic. Если у вас есть правильное направление import fla.icons.GreyLogo, вы можете получить логотип, позвонив по номеру

.
var logo:GreyLogo = new GreyLogo();

Вот статья, которая более детально описывает эту тему. Если я правильно пойму вашу настройку, будет много работы, но она может оказаться полезной в будущих проектах.

Приветствия
EP.

...