2010-10-06 35 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; 
    } 
相關問題