How can I list all the const properties defined in a class
Asked Answered
F

3

0

How can i list all the names (and values) of public (and private / protected) const defined in a class ?

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
        // ...
    }

}
Freak answered 6/10, 2010 at 10:32 Comment(0)
M
1

At runtime, you can use describeType() to list all the public vars (not too sure about consts), and a whole lot more info too.

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

Privates are more tricky to get.

Not sure if it wouldn't be quicker to create an array of the constants and then use array.indexOf(type)

P.S. I also believe there is a JSON version of describeType() now, somewhere.

Messmate answered 6/10, 2010 at 10:32 Comment(1)
woah! An array is surely quicker! But reading the class definition I'm sure that I do not forget to update values in two places. Thanks.Freak
I
2

This works with as3 and 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[obj.@name]){
                return true;
            }
        }
        return false;
    }
Inexpiable answered 6/10, 2010 at 10:32 Comment(0)
M
1

At runtime, you can use describeType() to list all the public vars (not too sure about consts), and a whole lot more info too.

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

Privates are more tricky to get.

Not sure if it wouldn't be quicker to create an array of the constants and then use array.indexOf(type)

P.S. I also believe there is a JSON version of describeType() now, somewhere.

Messmate answered 6/10, 2010 at 10:32 Comment(1)
woah! An array is surely quicker! But reading the class definition I'm sure that I do not forget to update values in two places. Thanks.Freak
B
0

FlashBuilder autocompletion will give you all the constant on your class and much more.

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

Bambi answered 6/10, 2010 at 10:32 Comment(1)
I'm not interested at all to get the list while i'm writing! Runtime to check I've passed a understandable value.Freak

© 2022 - 2024 — McMap. All rights reserved.