Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1602 connectés 

  FORUM HardWare.fr
  Programmation
  Flash/ActionScript

  As3 addEventListener + pasage paramètres objet perso

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

As3 addEventListener + pasage paramètres objet perso

n°1913906
bigboss87
Posté le 11-08-2009 à 11:54:22  profilanswer
 

Bonjour,
je souhaiterais pouvoir créer dynamiquement des linkButtons à partir d'un ensemble d'objets persos contenus dans un ArrayCollection, et ceci dans le but de gérer un calendrier (je simplifie mon code ici en ne gardant que l'essentiel).
Pour cela, à chaque LinkButton que je crée à partir de chacun de mes objets, je souhaite ajouter un EventListener. Je souhaite ensuite récupérer, dans la méthode associée à l'événement, les attributs de mon objet en cours.
Mon problème ici est que l'instance d'objet que je récupère est toujours la dernière de la boucle.
 
Voici mon code :
 

Code :
  1. for each(var obj:Object in myArrayCollection){
  2.     var lbutton:LinkButton = new LinkButton();
  3.     lbutton.addEventListener(MouseEvent.CLICK, function (e:MouseEvent):void{
  4.         clickLButtonListener(e, obj);
  5.     });
  6. }
  7. private function clickLButtonListener(event:MouseEvent, obj:Object){
  8.     event.currentTarget.label = obj.libelle;
  9. }


 
L'exemple est simplifié, je sais qu'on pourrait affecter le libellé de l'objet au label du linkbutton directement, mais c'est juste pour l'exemple.
Ici mon problème c'est que le label de tous mes linkbuttons est le même : c'est le libellé du dernier objet parcouru dans la boucle.
 
Tout fonctionne bien si je passe par l'événement :
 

Code :
  1. for each(var obj:Object in myArrayCollection){
  2.     var lbutton:LinkButton = new LinkButton();
  3.     lbutton.label = obj.libelle;
  4.     lbutton.addEventListener(MouseEvent.CLICK, clickLButtonListener);
  5. }
  6. private function clickLButtonListener(event:MouseEvent){
  7.     event.currentTarget.label = LinkButton(event.currentTarget).label;
  8. }


mais ce n'est pas ce que je souhaite faire. Je voudrais récupérer tous les attributs de mon objet dans ma méthode 'clickLButtonListener' (pas seulement le libellé, il y en a d'autre);
 
J'ai essayé en créant une nouvelle instance pour chaque objet dans ma boucle, et de la passer au listener, plutot que l'objet directement, mais ca ne change rien au problème.
 
Quelqu'un aurait-il une solution pour moi svp?

mood
Publicité
Posté le 11-08-2009 à 11:54:22  profilanswer
 

n°1913953
abais
Posté le 11-08-2009 à 13:04:39  profilanswer
 

Au risque de dire une très grosse bêtise :

Code :
  1. for each(var obj:Object in myArrayCollection)
  2. {
  3.    var lbutton:LinkButton = new LinkButton();
  4.    lbutton.addEventListener(MouseEvent.CLICK, clickLButtonListener);
  5. }
  6.  
  7. private function clickLButtonListener(event:MouseEvent):void
  8. {
  9.    event.currentTarget.label = event.target.libelle;
  10. }


Message édité par abais le 11-08-2009 à 13:05:14

---------------
Le membre ci-contre n'est pas responsable du message ci-dessus.
n°1913959
bigboss87
Posté le 11-08-2009 à 13:30:36  profilanswer
 

erreur de copier/coller de ma part (pour l'oubli de ':void'.
De tte façon il me semble que ça passe sans ça.

n°1914164
abais
Posté le 11-08-2009 à 21:29:39  profilanswer
 

Oui ça passe, mais là n'est pas la question, j'insistais ici de passer par la propriété target de l'event pour cibler l'objet en question...
Et surtout, tu déclares la fonction du mouseEvent dans le Listener, donc, une fois par boucle... Ce qui fait que la fonction est écraser à chaque "each", il est donc logique qu'il ne retienne que la dernière.


Message édité par abais le 11-08-2009 à 21:33:18

---------------
Le membre ci-contre n'est pas responsable du message ci-dessus.

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Flash/ActionScript

  As3 addEventListener + pasage paramètres objet perso

 

Sujets relatifs
GMaps API et l'objet GMap2[AS3] Donner des propriétés en masse à un objet
Défilement d'objet et scintillementProblème de formulaire: objet = [SPAM]
Erreur 1004: Méthode Open de l'objet workbook échouée[VBA Excel 2007] erreur Nombre d'arguments incorrects [RESOLU]
Erreur 1004 : La methode 'Cells' de l'objet '_Global' a échouéWeb Service Axis, inversion paramètres methode
preg_replace sur page perso sfr : comment contourner le pb ? 
Plus de sujets relatifs à : As3 addEventListener + pasage paramètres objet perso


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR