Aide - Recherche - Membres - Calendrier
Version complète : Récupérer les propriétés d'une classe
Centre de Formation Flash - Forums Adobe Flash > Rich media et intégration > Flex
Moustik78
Bonjour à toutes et à tous !

Je voudrais faire quelque chose en Flex, mais je ne sais pas si c'est réellement possible. En tout cas, je n'ai pas trouvé de réelles réponses dans les docs en ligne. icon_confused.gif

J'ai une classe, disposant de quelques propriétés publiques. Ce que j'aimerai, c'est que dans un autre fichier AS, je récupère le nom de toutes les propriétés publiques de cette classe, afin de les stocker dans un tableau ou tout autre traitement. Par exemple, j'ai une classe Example :

CODE
public class Example
{
      public var prop1 : int;
      public var prop2 : String;
}


Et que dans mon fichier, je puisse avoir un moyen de récupérer non pas les valeurs des propriétés, mais leur nom (donc ici "prop1" et "prop2"). Mon but étant d'obtenir le nom des propriétés de plusieurs classes.

Selon vous, est-ce possible? Et si oui... et bien comment? icon_mrgreen.gif
Fusion
Quelques pistes ici : http://wiki.mediabox.fr/tutoriaux/flash/parcours
Moustik78
Merci Fusion pour ce lien.

CITATION
Elle permet aussi de parcourir les propriétés d’un objet mais ceci est un autre sujet...


j'ai trouvé cette ligne sur le tuto, et c'est ce que je cherche (du moins ça y ressemble), mais pas moyen d'en savoir plus. :s
Tonic
Salut,

une solution consiterait à déclarer ta classe comme étant dynamic.

Ensuite, il te suffit de parcourir ton objet :

CODE
package
{
    public dynamic class UnTest
    {
        public function UnTest()
        {
            super();
            this.ok="okir";
            this.bonjour="salut";        
        }        
    }
}

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" >    
    <mx:Script>
        <![CDATA[
            
            private function lanceFR():void
            {
                var test : UnTest = new UnTest();
                
                for(var i:String in test)
                {
                    trace("elt :"+i+" - "+test[i]);
                }                
            }
        ]]>
    </mx:Script>
    <mx:Button x="128" y="519" label="Button" click="lanceFR()"/>
</mx:Application>

//trace
elt :bonjour - salut
elt :ok - okir
Moustik78
Ca roxx ! Effectivement, en parcourant l'objet ainsi, on peut récupérer le nom de la propriété.

Merci beaucoup Tonic et Fusion pour votre aide wink.gif
dada
Salut,

il y a plus simple en AS3 smile.gif

Une classe :
CODE
package{
    public class MaClasse
    {
        public var test:String;
        public var blabla:String;
    }
}


Listage des noms de variables :
CODE
import flash.utils.describeType;

var varsList:XMLList = describeType(MaClasse)..variable.@name;

var item:XML;
for each (item in varsList)
{
    trace("nom de variable : " + item.toXMLString());
}

Sortie :
CITATION
nom de variable : blabla
nom de variable : test


++ smile.gif
Moustik78
Ah oui je ne connaissais pas cette méthode describeType(). Elle est fort intéressante smile.gif

Merci beaucoup dada ! icon_biggrin.gif
Ceci est une version "bas débit" de notre forum. Pour voir la version complète avec plus d'informations, la mise en page et les images, veuillez cliquer ici.
Invision Power Board © 2001-2008 Invision Power Services, Inc.