IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

ActionScript 3 Discussion :

Portée d'un tableau


Sujet :

ActionScript 3

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Août 2007
    Messages
    248
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 248
    Par défaut Portée d'un tableau
    Bonjour,
    "petite" question pour vous je suis sûr! (moi ça fait 2 jours que j'essaie de la solutionner !)

    Dans une fonction A, je créé un tableau "tablo". Ensuite je passe une requête sql via un addEventListener.
    La fonction B écoute (asynchrone) et créée une arrayCollection : "besoins".
    La suite de la fonction A appelle une fonction C avec le tableau "tablo" en paramètre. Comment puis-je récupérer le tableau créé dans la fonction B?

    En fait, la fonction C n'est pas vraiment utile, mais comme on ne peut pas passer de paramètre en appelant B je n'ai pas le choix. Comment faire? Un événement personnalisé me débloquerait-il?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    [Bindable]private var besoins:ArrayCollection = new ArrayCollection();
     
    private function A():void{
            //création tablo()
            sqls =new SQLStatement();
    	sqls.sqlConnection = sqlc;
    	sqls.text = "select num_besoinF,cparateur,lbl_comm,marg,qte from JOINT_PARAM where num_profil=1 and num_patho=1;";
    	sqls.execute();
    	sqls.addEventListener(SQLEvent.RESULT, B);
    	C(tablo);
    }
    private function B(e:SQLEvent):void
    {
    	var data:Array = sqls.getResult().data;
    	besoins = new ArrayCollection(data);
    }
    private function C(tablo:Array):void{
    	var bes:uint;
    	bes=besoins.length;
    	Alert.show(""+bes); 
    //Me renvoie 0 alors que si je mets ce code dans B, me renvoie 41
    }

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    124
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 124
    Par défaut
    Hello,

    Tu as plusieurs possibilités peut-être un peu plus simple que de passer par un custom event comme de positionner tablo comme membre de ta classe. Ainsi il sera accessible de partout. Ou encore de passer par une fonction anonyme pour B.

    Premier cas :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
     
    [Bindable]private var besoins:ArrayCollection = new ArrayCollection();
     
    var tablo:TypeDeTablo;
     
    private function A():void{
            //<s>création </s>affectation tablo()
            sqls =new SQLStatement();
    	sqls.sqlConnection = sqlc;
    	sqls.text = "select num_besoinF,cparateur,lbl_comm,marg,qte from JOINT_PARAM where num_profil=1 and num_patho=1;";
    	sqls.execute();
    	sqls.addEventListener(SQLEvent.RESULT, B);
    	C(tablo);
    }
    private function B(e:SQLEvent):void
    {
    	var data:Array = sqls.getResult().data;
    	besoins = new ArrayCollection(data);	
    	Alert.show(besoins.length); 
            // Ton objet tablo est accessible ici
     
    }
    Deuxième cas :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    [Bindable]private var besoins:ArrayCollection = new ArrayCollection();
     
    private function A():void{
            //création tablo()
            sqls =new SQLStatement();
    	sqls.sqlConnection = sqlc;
    	sqls.text = "select num_besoinF,cparateur,lbl_comm,marg,qte from JOINT_PARAM where num_profil=1 and num_patho=1;";
    	sqls.execute();
    	sqls.addEventListener(SQLEvent.RESULT, function(e:SQLEvent){
            	var data:Array = sqls.getResult().data;
                    besoins = new ArrayCollection(data);	
             	Alert.show(besoins.length); 
                    // Ton objet tablo est accessible ici               
            });	
    }
    }
    Charles.

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Août 2007
    Messages
    248
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 248
    Par défaut
    Excellent!
    Tu imbriques la fonction directement dans le addEventListener.
    Mais comment veux-tu que je trouve ça tout seul mdr! (Je regarde la 1ère méthode maintenant)

    Merci à toi pour ta précieuse ( à la Golum) aide!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Portée globale pour un tableau
    Par Myrrdin dans le forum ActionScript 1 & ActionScript 2
    Réponses: 2
    Dernier message: 23/06/2010, 09h45
  2. Portée de variable tableau
    Par subnox dans le forum VBA Access
    Réponses: 2
    Dernier message: 17/10/2007, 14h46
  3. Réponses: 6
    Dernier message: 12/08/2007, 13h29
  4. envoi tableau de data sur port série
    Par chourmo dans le forum Langage
    Réponses: 2
    Dernier message: 27/07/2005, 16h23
  5. Réponses: 8
    Dernier message: 17/02/2005, 09h05

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo