Позвольте мне представить проблему в первую очередь. Мне нужно загрузить все изображения, которые я использовал в своем проекте извне, без встраивания. Изображения присутствуют либо в скинах, либо в виде значков для элементов в деревьях. Я столкнулся с классом IconUtility here Мне удалось изменить его и использовать для деревьев, но проблема в том, что мы не можем использовать iconutility для того же компонента, чтобы установить 2 разных скина (например, для кнопки - верхняя одежда). Я не мог придумать обходное решение с iconutility. Можно ли смоделировать динамическое внедрение и создание класса и вернуть класс во время выполнения?Создание динамического класса в actionscript
ответ
самая простая вещь, чтобы выполнить эти вещи, чтобы создать один/несколько СФБ, содержащих свои активы , загрузите его, а затем вытащить классы оттуда (т.е. от загруженного домена приложения СФБА) ...
есть несколько решений, к тому, что:
- хардкор версии загрузить эти изображения в
ByteArray
используя URLLoader, а затем создайте новыйByteArray
, который будет swf-файлом, содержащим внедренные активы и необходимые инструкции, чтобы связать их с классами ... вы можете взглянуть на искру swfassist ... - немного более простой и производительный (так как вы только сделать это один раз), чтобы сделать это на сервере ... здесь можно
- просто используют использование flex compiler
- SWFMILL
- использовать некоторые библиотеки для работы швейцарских франков, как ming
- сделайте это самостоятельно, ha ой ... :)
надежда, что помогает
редактировать: второе решение о создании активов на сервере, используя подходящий инструмент ... или кодирования инструмент самостоятельно, но это было скорее шутка ... :) ... я понял, ссылка на компилятор flex была неправильной ... идея состояла бы в том, чтобы просто подключить ее к вашему веб-серверу, а затем скомпилировать какой-нибудь ActionScript, что сделает встраивание ... так что вы бы сгенерировали один файл ActionScript следующим образом:
package {
import flash.display.Sprite;
import flash.utils.describeType;
public class Assets extends Sprite {
[Embed(source='asset_1_Location')]
public static var asset_1:Class;
[Embed(source='asset_2_Location')]
public static var asset_2:Class;
...
[Embed(source='asset_n_Location')]
public static var asset_n:Class;
public function Assets() { }
public static function getAll():Object {
var ret:Object = { };
for each (var x:XML in describeType(Assets).variable.(@type=="Class")) {
var name:String = [email protected];
ret[name] = Assets[name];
}
return ret;
}
}
}
После этого компилятор flex компилирует его ... при загрузке извлекает данные с помощью LoaderInfo :: applicationDomain.getDefinition («Assets»). GetAll(), который даст вам карту значений ключа со всеми необходимыми классами. ..
с другими инструментами, она будет работать по-другому, но я надеюсь, что это проясняет, как он должен работать ...
на сервере, вам нужен сервис, который будет строить эти СФБЫ активов для вас, и кэшировать их ... поэтому вы отправляете некоторый POST-запрос, например, с массивом JSON файлов/изображений, которые вам нужны, и он вернет вам SWF ... сервер должен делать соответствующее кэширование, конечно ...
надеюсь, теперь это помогает ...:)
Greetz
back2dos
Спасибо за обратную связь. Первое решение действительно хардкорное, и я не могу понять второе решение. Не могли бы вы объяснить это подробно? – dante
This было то, что я искал ... К сожалению, утверждает автор, он не был в состоянии использовать его для кнопки шкурок
пост обновлён ... Greetz – back2dos