если честно, не совсем понял в чем проблема
вот такой вариант, например
Код AS3:
package
{
import flash.display.Sprite;
public class Main extends Sprite
{
public function Main():void
{
var list:Vector.<Enumeration> = Enumeration.getElementsList(UnitType);
trace("list : " + list);
var element:Enumeration = Enumeration.getElementByValue(1, UnitType);
trace("element : " + element);
var isHero:Boolean = (element === UnitType.HERO);
trace("isHero : " + isHero);
}
}
}
//=================================//
import flash.utils.describeType;
class Enumeration
{
public var value:*;
public function Enumeration(value:*)
{
this.value = value;
}
public static function getElementsList(enumClass:Class):Vector.<Enumeration>
{
var list:Vector.<Enumeration> = new Vector.<Enumeration>();
var constList:XMLList = describeType(enumClass).constant;
for each (var item:XML in constList)
{
list.push(enumClass[item.@name])
}
return list;
}
public static function getElementByValue(value:*, enumClass:Class):Enumeration
{
var constList:XMLList = describeType(enumClass).constant;
for each (var item:XML in constList)
{
if (enumClass[item.@name].value == value)
return enumClass[item.@name];
}
return null;
}
}
//=================================//
class UintEnumeration extends Enumeration
{
public function UintEnumeration(value:uint)
{
super(value);
}
}
//=================================//
class UnitType extends UintEnumeration
{
public static const HERO:UnitType = new UnitType(1);
public static const WARRIOR:UnitType = new UnitType(2);
public function UnitType(value:uint)
{
super(value);
}
}