|
|
|||||
[+ 1.0 08.10.14]
блогер
Регистрация: Mar 2010
Адрес: x = stage.stageWidth/2 y= stage.stageHeight/2
Сообщений: 293
Записей в блоге: 2
|
Список констант класса
Необходимо получить список констант класса, чтобы написать корректное наследование от Enumiration
Одним из ключевых свойств паттерна Enumiration является обязательное условие создания экземпляров перечисления исключительно через константы. Собственно на данный момент у меня это осуществляется методом Evaluation.created (); Любые попытки вызвать конструктор после этого будут выкидывать ошибки public class UnitType extends UintEnumiration { public static const HERO:UnitType = new UnitType(1); public static const WARRIOR:UnitType = new UnitType(2); public static const MAGE:UnitType = new UnitType(3); public static const ENEMY:UnitType = new UnitType(4); Enumiration.creaded (true); public function UnitType(value:uint) { super (value); } } |
|
|||||
Можно получить число и список экземпляров, а не список констант.
public class UnitType extends UintEnumiration { public static const HERO:UnitType = new UnitType(1); public static const WARRIOR:UnitType = new UnitType(2); public static const MAGE:UnitType = new UnitType(3); public static const ENEMY:UnitType = new UnitType(4); public static var numOfObjects:int = 0; public static var objects:Vector.<UnitType> = new Vector.<UnitType>(); Enumiration.creaded (true); public function UnitType(value:uint) { super (value); numOfObjects ++; objects.push(this); } }
__________________
There is no thing in this world that is not simple. |
|
|||||
[+ 1.0 08.10.14]
блогер
Регистрация: Mar 2010
Адрес: x = stage.stageWidth/2 y= stage.stageHeight/2
Сообщений: 293
Записей в блоге: 2
|
да, все верно. Я могу получить список экземпляров, но мне также нужен список констант иначе я не могу уточнить создан ли был экземпляр для того чтобы его сделали значением константы класса, либо просто кто-то и где-то в коде вызвал конструктор. Собственно, Enumiration.created () блокирует дальнейшие вызовы конструктора. Только список экземпляров ничего не даст.
|
|
|||||
public static function isValidValue(type:String):Boolean { var m_constNameList:XMLList = describeType(Layers).descendants("constant"); for each(var obj:Object in m_constNameList) { if (type == Layers[obj.@name]) { return true; } } return false; } Судя из кода, количество констант можно с помощью вызова метода XMLList.length()
__________________
There is no thing in this world that is not simple. |
|
|||||
[+ 1.0 08.10.14]
блогер
Регистрация: Mar 2010
Адрес: x = stage.stageWidth/2 y= stage.stageHeight/2
Сообщений: 293
Записей в блоге: 2
|
Спасибо большое. Для того чтобы приблизиться к вызову метода describeType, стал вытаскивать ссылку на класс наследник и неожиданно выяснил что при создании экземпляра в качестве значения его константы он не успевает определить наименование класса:
В итоге получил нужную проверку |
Часовой пояс GMT +4, время: 16:09. |
|
« Предыдущая тема | Следующая тема » |
|
|