Показать сообщение отдельно
Старый 29.01.2014, 15:13
silin вне форума Посмотреть профиль Посетить домашнюю страницу silin Найти все сообщения от silin
  № 13  
Ответить с цитированием
silin
 
Аватар для silin

блогер
Регистрация: Mar 2003
Адрес: Моск. обл.
Сообщений: 5,269
Записей в блоге: 6
если честно, не совсем понял в чем проблема
вот такой вариант, например
Код 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);
 
	}
 
}