2010-10-06 102 views
0

如何列出在类中定义的公共(和私有/受保护)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 
     // ... 
    } 

} 

回答

1

在运行时,你可以使用的describeType()可以列出所有的公共瓦尔(不太确定consts),和一大堆更多信息太多。

http://www.adobe.com/livedocs/flash/9.0/ActionScriptLangRefV3/flash/utils/package.html#describeType()

私人表演更棘手的。

不知道它不会是更快地创建常量的阵列,然后使用array.indexOf(类型)

P.S.我也相信现在有一个describeType()的JSON版本。

+0

哇!一个数组肯定会更快!但是阅读类定义我确信我不会忘记在两个地方更新值。谢谢。 – yuri 2010-10-06 16:06:53

0

FlashBuilder自动完成将为您提供所有课程中的所有常数以及更多内容。

http://www.adobe.com/products/flashbuilder/

+0

我没有兴趣在所有获得的名单,而我正在写!运行时检查我已经通过了一个可以理解的价值。 – yuri 2010-10-06 16:10:07

2

这适用于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; 
    } 
相关问题