如何列出类中定义的所有常量属性
问题描述:
如何列出在类中定义的公共(和私有/受保护)const的所有名称(和值)?如何列出类中定义的所有常量属性
public class Layers {
public const BACKGROUND:String = "background";
public const PARENT:String = "parent";
public const MAP:String = "map";
public const LINES:String = "lines";
public const POINTS:String = "points";
public const WINDOWS:String = "windows";
...
public function isValidValue(type:String) {
// ...
// if type is a value of a constant return TRUE
// ...
}
}
答
在运行时,你可以使用的describeType()可以列出所有的公共瓦尔(不太确定consts),和一大堆更多信息太多。
http://www.adobe.com/livedocs/flash/9.0/ActionScriptLangRefV3/flash/utils/package.html#describeType()
私人表演更棘手的。
不知道它不会是更快地创建常量的阵列,然后使用array.indexOf(类型)
P.S.我也相信现在有一个describeType()的JSON版本。
答
FlashBuilder自动完成将为您提供所有课程中的所有常数以及更多内容。
+0
我没有兴趣在所有获得的名单,而我正在写!运行时检查我已经通过了一个可以理解的价值。 – yuri 2010-10-06 16:10:07
答
这适用于AS3和Flex 4.5.1
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[[email protected]]){
return true;
}
}
return false;
}
哇!一个数组肯定会更快!但是阅读类定义我确信我不会忘记在两个地方更新值。谢谢。 – yuri 2010-10-06 16:06:53