Domanda

Come posso elencare tutti i nomi (e valori) dei const pubblici (e privati/protetti) definiti in una 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
        // ...
    }

}
È stato utile?

Soluzione

In fase di esecuzione, puoi utilizzare descriptionType() per elencare tutte le variabili pubbliche (non troppo sicuro dei const) e anche molte più informazioni.

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

I privati ​​sono più difficili da ottenere.

Non sono sicuro che non sarebbe più veloce creare un array di costanti e quindi utilizzare array.indexOf(type)

PSCredo anche che ora, da qualche parte, esista una versione JSON di descriptionType().

Altri suggerimenti

Funziona con 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;
    }

Il completamento automatico di FlashBuilder ti fornirà tutte le costanti sulla tua classe e molto altro ancora.

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

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top