|
|
« Предыдущая тема | Следующая тема » |
Опции темы | Опции просмотра |
|
|
|||||
[+1 16.03.13]
[+1 22.03.13] Регистрация: Dec 2012
Сообщений: 100
|
Как вогнать кучу статических свойств класса в объект или массив с помощью цикла?
Сабж. Подскажите пожалуйста
Имеется в наличии класс с кучей статических свойств package { internal class StaticConstName { internal static const _kjhghgh:String = 'sdfdsdfm'; internal static const _sdfgsfdf:String = 'sdfdsdfr'; internal static const _sdfgfdsdf:String = 'sdfdsdf'; internal static const _vfgfdsa:String = 'wertre'; internal static const _dfdsdfgf:String = 'kjhjkjh'; { { Мысль у меня вот такая, а как её реализовать чтобы это не выглядело полной лажей, как в нижеследующем примере? var i:int = StaticConstName.length; // Как посчитать длину массива, состоящую из статических свойств класса? var o:Vector.<Object> = new Vector<Object>(); while(--i > -1) { o.push({'StaticConstName.iтый_элемент':StaticConstName.iтый_элемент}); // Как воткнуть статические свойства класса в массив именно в таком формате {ИмяСтатичСвойства: ЗначениеCтатич.Свойства} } |
|
|||||
Ну как-то так:
package { import flash.display.Sprite; import flash.utils.describeType; public class ClassConstsExample extends Sprite { public function ClassConstsExample() { var constMap : Object = getConstMap(StaticClass); for(var propName : String in constMap) { var value : * = constMap[propName]; trace('map[' + propName + '] : ' + value); } } //*** private ***// private function getConstNames(classObject : Class):Vector.<String> { var type : XML = describeType(classObject); var constants : XMLList = type..constant; var names : Vector.<String> = new Vector.<String>(); for each(var constant : XML in constants) { names.push(constant.@name); } return names; } private function getConstMap(classObject : Class):Object { var constNames : Vector.<String> = getConstNames(classObject); var classConstants : Object = {}; for each(var constName : String in constNames) { var constValue : * = classObject[constName]; classConstants[constName] = constValue; } return classConstants; } } } internal class StaticClass { public static const PROP_1 : String = "prop_1_value"; public static const PROP_2 : String = "prop_2_value"; public static const PROP_3 : String = "prop_3_value"; public static const PROP_4 : String = "prop_4_value"; public static const PROP_5 : String = "prop_5_value"; }
__________________
9 из 10 голосов в моей голове сказали наркотикам "НЕТ" Мои ачивки: художник-паразит. |
|
|||||
буду краток
модератор форума
Регистрация: Sep 2003
Адрес: Ближайшее Замкадье
Сообщений: 3,110
Записей в блоге: 28
|
Меня терзают смутные сомненья, что на самом деле это автору топика не нужно..
Пусть лучше расскажет какая задача стоит и для чего ему вдруг понадобился такой хак. Наверняка, можно предложить более простое архитектурное решение.
__________________
Отряд Котовскага |
|
|||||
Я зачастую создаю массивы статических свойств вручную... в виде статического свойства того же класса
__________________
9 из 10 голосов в моей голове сказали наркотикам "НЕТ" Мои ачивки: художник-паразит. |
|
|||||
[+1 16.03.13]
[+1 22.03.13] Регистрация: Dec 2012
Сообщений: 100
|
|
|
|||||
Так вам что, совсем не важно как они называются?
__________________
adobe AS3 manual |
|
|||||
[+1 16.03.13]
[+1 22.03.13] Регистрация: Dec 2012
Сообщений: 100
|
Мне основная мысль ясна как сиё реализовать, а остальное я "догоню". Спасибо за беспокойство
|
|
|||||
Просто если не важно, можно было бы обойтись без массива, называя их value1, value2, value3
__________________
adobe AS3 manual |
Часовой пояс GMT +4, время: 10:25. |
|
« Предыдущая тема | Следующая тема » |
|
|