Внедрить данные в swf во время компиляции

Можно ли вводить данные, например коллекцию ресурсов (видео, изображения ...), в SWF-файл во время компиляции?

У нас есть гибкое приложение, которое должно иметь возможность экспортировать SWF-файл во время выполнения, который содержит все необходимые данные, потому что он должен работать как отдельное приложение (как в интерактивном, так и в автономном режиме).

До сих пор идея заключалась в создании сценария на стороне сервера, который вызывает компилятор гибкости и передает ему необходимые данные. Этот подход, кажется, отлично работает с использованием тега [Embed] для отдельных файлов, но он становится беспорядочным при попытке внедрить коллекции данных, которые различаются по длине для каждого экспортированного swf.

Мы могли бы сгенерировать mxml-файл с одной встроенной переменной для каждого ресурса и включить его во время компиляции, но этот подход кажется не идеальным.

Мы изучили некоторые библиотеки байт-кода ActionScript, но они не подходят для этого.

Любые предложения или другие подходы к подобной проблеме?

Спасибо,

Берт


person Bert Vandamme    schedule 29.11.2010    source источник
comment
1) Вам действительно нужно встраивать активы? 2) Задумывались ли вы об использовании модуля для повторной компиляции только ресурсов, а не всего приложения?   -  person David    schedule 29.11.2010


Ответы (4)


[Embed] определенно лучший способ. Вы можете создать файл AS с большим количеством вложений. Хотя сгенерированный код может быть немного уродливым, вы также можете создать более приятный API. Например, если вам нужен массив, сгенерируйте такой код:

[Embed(...)]
private var img_0:Class;

[Embed(...)]
private var img_1:Class;

[Embed(...)]
private var img_2:Class;

public var images:Array = [img_0, img_1, img_2];

Таким образом, единственное уродство - это частные переменные, которые увидит только генератор кода. Общедоступная переменная - это массив.

person Samuel Neff    schedule 29.11.2010

Я не уверен, зачем вам это нужно, но я думаю, я попытаюсь сгенерировать необходимый файл ActionScript из шаблона или чего-то подобного, а затем вызову компилятор flex. Надеюсь, это поможет вам ...

person MaxouMask    schedule 29.11.2010

попробуйте as3swf
он может сгенерировать SWF-файл из пустого ByteArray и, возможно, вставить встроенная графика там

person www0z0k    schedule 29.11.2010
comment
as3swf - одна из проверенных нами библиотек, но функциональные возможности, которые она предлагает, кажутся ограниченными. Нам нужно изменить переменную XML и набор ресурсов в результирующем swf. - person Bert Vandamme; 29.11.2010

Как сказал Сэм, [Embed] может работать, но что вы пытаетесь загрузить? Моя первая реакция заключается в том, что перекомпиляция для каждого запроса будет большим тормозом для сервера.

person michael.bartnett    schedule 29.11.2010
comment
Нагрузка на сервер действительно является проблемой, поэтому альтернативное решение, такое как изменение существующей среды выполнения swf @, было бы лучше, но я не нашел способа сделать это для более сложного сценария, чем рисование некоторой векторной графики на сцене. - person Bert Vandamme; 29.11.2010