Pergunta

Como posso listar todos os nomes (e valores) da constituição pública (e privada / protegida) definida em uma classe?

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

}
Foi útil?

Solução

Em tempo de execução, você pode usar o descriptyType () para listar todos os vars públicos (sem muita certeza sobre o ConstS) e muito mais informações também.

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

Privados são mais complicados de obter.

Não tenho certeza se não seria mais rápido criar uma matriz das constantes e depois usar o Array.Indexof (Type)

PS Eu também acredito que existe uma versão JSON do descriTEType () agora, em algum lugar.

Outras dicas

Isso funciona com AS3 e 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;
    }

O FlashBuilder AutoCompletion fornecerá toda a constante da sua classe e muito mais.

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

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top