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

Flex Discussion :

Ajouter dynamiquement un event listener


Sujet :

Flex

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Février 2008
    Messages
    90
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2008
    Messages : 90
    Points : 48
    Points
    48
    Par défaut Ajouter dynamiquement un event listener
    Bonjour à tous,


    Je début en Flex et pour l'instant j'aimerais ajouter au démarrage de mon application une checkbox ainsi qu'un event listener.

    Donc pour l'insant je fais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    var cbOther:CheckBox = new CheckBox();
    cbOther.label = "Other";
    cbOther.id = "cbOther";			cbOther.addEventListener(MouseEvent.CLICK,changeState);
    Et ma fonction changeState

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    private function changeState(event:MouseEvent):void {
     
    			if(cbOther.selected)
    				currentState="addStudyState";
    			else
    				currentState = '';
     
    			}

    Je pourrais créer une checkbox normalement mais j'ai besoin qu'elle soit créée dynamiquement.

    Lorsque je crée ma checkbox, je suis dans un resultHandler (je récupère une donnée de ma DB).


    Malheureusement, lorsque je click sur ma checkbox, rien ne se passe.

  2. #2
    Membre éclairé
    Homme Profil pro
    Consultant Angular / Java J2EE
    Inscrit en
    Novembre 2008
    Messages
    545
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Luxembourg

    Informations professionnelles :
    Activité : Consultant Angular / Java J2EE
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2008
    Messages : 545
    Points : 875
    Points
    875
    Par défaut
    Salut,

    a quoi correspond ton état addStudyState stp ?

    aurais-tu le code correspondant ?
    N'oubliez pas avant de poster :

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    793
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Avril 2009
    Messages : 793
    Points : 894
    Points
    894
    Par défaut
    Déjà il faut utiliser l'événement CHANGE et non pas CLICK.
    jyl@xx
    "Simplicity does not precede complexity, but follows it." Alan Perlis

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Février 2008
    Messages
    90
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2008
    Messages : 90
    Points : 48
    Points
    48
    Par défaut
    Citation Envoyé par Krazymins Voir le message
    Salut,

    a quoi correspond ton état addStudyState stp ?

    aurais-tu le code correspondant ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <mx:states>
    		<mx:State name="addStudyState">
    			<mx:AddChild  position="lastChild">
    				<canvas:CreateStudyCanvas id="addStudy" width="100%" y="163" height="236" x="10" studyCanvas="{this}" />
    			</mx:AddChild>
    		</mx:State>
    	</mx:states>

    Ca me rajoute juste un canvas.


    Le change, j'ai essayé, ça ne fonctionne pas

  5. #5
    Membre éclairé
    Homme Profil pro
    Consultant Angular / Java J2EE
    Inscrit en
    Novembre 2008
    Messages
    545
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Luxembourg

    Informations professionnelles :
    Activité : Consultant Angular / Java J2EE
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2008
    Messages : 545
    Points : 875
    Points
    875
    Par défaut
    Essaye peut-être de mettre un composant simple (e.g un button) à la place de ton composant CreateStudyCanvas dans ton state, pour voir si le problème vient de ton Event / Checkbox ou si ça vient de ton composant.
    N'oubliez pas avant de poster :

  6. #6
    Membre expérimenté

    Profil pro
    Inscrit en
    Mai 2006
    Messages
    895
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 895
    Points : 1 710
    Points
    1 710
    Par défaut
    Salut,

    Ton cbOther est déclaré en local, alors comment peux tu le récupérer dans ton changeState ?

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Février 2008
    Messages
    90
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2008
    Messages : 90
    Points : 48
    Points
    48
    Par défaut
    J'ai bien accès à mon cbOther dans ma fonction changeState. Ce que je veux faire c'est :

    1) Créer une check box dynamiquement
    2) Lui ajouter un event Listener
    3) Lorsque je coche ma checkbox, changer le currentState pour pouvoir ajouter un nouveau canvas.

  8. #8
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    793
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Avril 2009
    Messages : 793
    Points : 894
    Points
    894
    Par défaut
    Remarque sans doute bête mais il faut bien éliminer toutes les possibilités...

    Et il y a qq chose dans ton canvas ?
    Parce qu'un canvas par défaut c'est transparent, donc s'il ne contient aucun autre objet visuel il peut exister sans qu'on le voit.
    jyl@xx
    "Simplicity does not precede complexity, but follows it." Alan Perlis

  9. #9
    Membre éclairé
    Homme Profil pro
    Consultant Angular / Java J2EE
    Inscrit en
    Novembre 2008
    Messages
    545
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Luxembourg

    Informations professionnelles :
    Activité : Consultant Angular / Java J2EE
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2008
    Messages : 545
    Points : 875
    Points
    875
    Par défaut
    Citation Envoyé par jylaxx Voir le message
    Remarque sans doute bête mais il faut bien éliminer toutes les possibilités...

    Et il y a qq chose dans ton canvas ?
    Parce qu'un canvas par défaut c'est transparent, donc s'il ne contient aucun autre objet visuel il peut exister sans qu'on le voit.
    Yep, c'est pour ça à mon avis teste avec autre chose que ton canvas pour bien cerner l'erreur
    N'oubliez pas avant de poster :

  10. #10
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    793
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Avril 2009
    Messages : 793
    Points : 894
    Points
    894
    Par défaut
    Ensuite, est-ce que tu as vérifié que la fonction changeState était bien exécutée ?
    jyl@xx
    "Simplicity does not precede complexity, but follows it." Alan Perlis

  11. #11
    Membre du Club
    Profil pro
    Inscrit en
    Février 2008
    Messages
    90
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2008
    Messages : 90
    Points : 48
    Points
    48
    Par défaut
    J'ai oublié de préciser que si je crée la checkbox avec une balise <mx:CheckBox>, qui appelle la même fonction, ça marche. Le problème c'est que j'ai besoin que ce soit dynamique

    Et non la fonction changeState n'est pas exécutée, c'est la base du problème en fait, j'ai l'impression qu'il n'ajoute pas mon event listener :s

  12. #12
    Membre du Club
    Profil pro
    Inscrit en
    Février 2008
    Messages
    90
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2008
    Messages : 90
    Points : 48
    Points
    48
    Par défaut
    Ca marche


    J'ai remplace mon add listener par :

    cbOther.addEventListener("click",changeState);

    Et ensuite ma méthode

    private function changeState(e:Event):void {


    Pas trop compris pourquoi quand je prend MouseEvent.click marche pas

  13. #13
    Membre du Club
    Profil pro
    Inscrit en
    Février 2008
    Messages
    90
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2008
    Messages : 90
    Points : 48
    Points
    48
    Par défaut
    Citation Envoyé par ellene Voir le message
    Salut,

    Ton cbOther est déclaré en local, alors comment peux tu le récupérer dans ton changeState ?

    En fait c'était bien ça mon erreur. Mais j'avais pas remarqué que j'avais une référence cbOther déclaré en public. Du coup pas d'erreur de compilation et j'ai pas fait gaffe à ma déclaration.

    Ca marche bien MouseEvent.Click aussi finalement

    En gros, une super grosse faute d'innatention...

  14. #14
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    793
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Avril 2009
    Messages : 793
    Points : 894
    Points
    894
    Par défaut
    Il n'y a aucune raison de ne pas utiliser MouseEvent.CLICK et MouseEvent dans le listener (ou Event.CHANGE et Event).

    Il est toujours préférable d'utiliser les constantes plutôt que des string (même si en lisant le code de Flex on s'aperçoit qu'ils ne se gênent pas pour le faire).

    Enfin bref si ça ne fonctionnait pas ce n'est pas pour cette raison et il est toujours intéressant, surtout quand on débute dans un langage de comprendre pourquoi...

    -- trop tard ---
    jyl@xx
    "Simplicity does not precede complexity, but follows it." Alan Perlis

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

Discussions similaires

  1. [AJAX] Ajouter un listener sur des champs ajoutés dynamiquement
    Par KzrData dans le forum jQuery
    Réponses: 4
    Dernier message: 05/09/2012, 09h13
  2. [XL-2003] Ajouter dynamiquement des Events à une Feuille via un module de classe.
    Par comme de bien entendu dans le forum Excel
    Réponses: 4
    Dernier message: 10/06/2012, 07h11
  3. [XL-2003] Ajouter dynamiquement des Events à une Feuille via un module de classe.
    Par comme de bien entendu dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 08/06/2012, 18h06
  4. Event sur div ajouté dynamiquement
    Par Paci88 dans le forum jQuery
    Réponses: 7
    Dernier message: 21/01/2009, 13h26
  5. Ajout dynamique d'un contrôle à une fenêtre
    Par Yacine95000 dans le forum MFC
    Réponses: 6
    Dernier message: 08/06/2004, 16h03

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