Comment faire un RemoveEventListener?

Signaler
Messages postés
77
Date d'inscription
samedi 9 août 2003
Statut
Membre
Dernière intervention
23 avril 2009
-
Messages postés
77
Date d'inscription
samedi 9 août 2003
Statut
Membre
Dernière intervention
23 avril 2009
-
Bonjour à tous.

Pour des raisons de simplification de mon code, je souhaiterai crée un écouteur comme ceci :

pencarte._bouton_jouer.addEventListener(MouseEvent.CLICK, function (event : MouseEvent)
{
     pencarte._bouton_jouer.removeEventListener(MouseEvent.CLICK, null);
} );

Mais mon removeEventListener ne marche pas car je ne lui donne pas le nom de la fonction, puisqu'elle n'as pas de nom. Ma question est donc : Comment arrêter mon écouteur. Merci.
A voir également:

7 réponses

Messages postés
1393
Date d'inscription
dimanche 28 novembre 2004
Statut
Membre
Dernière intervention
2 août 2011

Hello,

pourquoi ne fais tu pas :

pencarte._bouton_jouer.addEventListener(MouseEvent.CLICK, jouer);

function jouer(event:MouseEvent)
{
     pencarte._bouton_jouer.removeEventListener(MouseEvent.CLICK, jouer);
}

-- Orange73 --
"L'homme n'est pas fait pour travailler, la preuve c'est que cela le fatigue" (Voltaire)
Messages postés
6146
Date d'inscription
dimanche 21 décembre 2003
Statut
Modérateur
Dernière intervention
4 septembre 2013
8
je dirais même mieux :

event.currentTarget.removeEventListener(MouseEvent.CLICK, jouer);

Peg'
Messages postés
77
Date d'inscription
samedi 9 août 2003
Statut
Membre
Dernière intervention
23 avril 2009

Merci de votre aide. Voici mon code un peu plus complet :

private function new_level()
{
   var pencarte : Pencarte = new Pencarte(_fond, next_level, _commentaires.get(Std.string("niveau" + _level)), _level);

   pencarte._bouton_jouer.addEventListener(MouseEvent.CLICK, jouer);
   function jouer(event : MouseEvent)
      {
         event.currentTarget.removeEventListener(MouseEvent.CLICK, jouer);
      }  
}

Mais ça ne marche pas.
Messages postés
6146
Date d'inscription
dimanche 21 décembre 2003
Statut
Modérateur
Dernière intervention
4 septembre 2013
8
il faut que tu déclares ta variable pencarte et ta fonction "jouer" en dehors de la fonction new_level si tu veux que cela fonctionne correctement.

Peg'
Messages postés
77
Date d'inscription
samedi 9 août 2003
Statut
Membre
Dernière intervention
23 avril 2009

C'est justement ce qui m'arrange pas. Car vu le nombre de fonction que je dois mettre ainsi, je voulais éviter de déclarer une panoplie de variable de classe. Merci pour ton aide.
Messages postés
6146
Date d'inscription
dimanche 21 décembre 2003
Statut
Modérateur
Dernière intervention
4 septembre 2013
8
ben tu n'as pas le choix ... ou alors tu crées une classe pour éviter de noyer ton code.
Si tu déclares une variable dans une fonction, cette variable n'existera que le temps de la fonction ... donc impossible à manipuler par la suite.

Peg'
Messages postés
77
Date d'inscription
samedi 9 août 2003
Statut
Membre
Dernière intervention
23 avril 2009

Merci à tous pour votre aide. J'ai trouvé la solution que je cherchais, la voici :

private function new_level()
{
   var pencarte : Pencarte = new Pencarte(_fond, next_level, _commentaires.get(Std.string("niveau" + _level)), _level);
   var jouer = null;
   jouer = function (event : MouseEvent){event.currentTarget.removeEventListener(MouseEvent.CLICK, jouer);

      }  
   pencarte._bouton_jouer.addEventListener(MouseEvent.CLICK, jouer);  
}

Par contre, j'utilise ce code sous haxe, je ne sais pas s'il fonctionne sous AS3.