2009-07-17 2 views
0

Позвольте мне представить проблему в первую очередь. Мне нужно загрузить все изображения, которые я использовал в своем проекте извне, без встраивания. Изображения присутствуют либо в скинах, либо в виде значков для элементов в деревьях. Я столкнулся с классом IconUtility here Мне удалось изменить его и использовать для деревьев, но проблема в том, что мы не можем использовать iconutility для того же компонента, чтобы установить 2 разных скина (например, для кнопки - верхняя одежда). Я не мог придумать обходное решение с iconutility. Можно ли смоделировать динамическое внедрение и создание класса и вернуть класс во время выполнения?Создание динамического класса в actionscript

+0

пост обновлён ... Greetz – back2dos

ответ

0

самая простая вещь, чтобы выполнить эти вещи, чтобы создать один/несколько СФБ, содержащих свои активы , загрузите его, а затем вытащить классы оттуда (т.е. от загруженного домена приложения СФБА) ...

есть несколько решений, к тому, что:

  • хардкор версии загрузить эти изображения в 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

+0

Спасибо за обратную связь. Первое решение действительно хардкорное, и я не могу понять второе решение. Не могли бы вы объяснить это подробно? – dante

0

This было то, что я искал ... К сожалению, утверждает автор, он не был в состоянии использовать его для кнопки шкурок

Смежные вопросы