Comment faire un RemoveEventListener?

cs_jcdc Messages postés 77 Date d'inscription samedi 9 août 2003 Statut Membre Dernière intervention 23 avril 2009 - 22 avril 2009 à 16:36
cs_jcdc Messages postés 77 Date d'inscription samedi 9 août 2003 Statut Membre Dernière intervention 23 avril 2009 - 23 avril 2009 à 14:12
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.

7 réponses

Orange73 Messages postés 1375 Date d'inscription dimanche 28 novembre 2004 Statut Membre Dernière intervention 2 août 2011
22 avril 2009 à 16:49
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)
0
pegase31 Messages postés 6138 Date d'inscription dimanche 21 décembre 2003 Statut Modérateur Dernière intervention 4 septembre 2013 12
22 avril 2009 à 16:51
je dirais même mieux :

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

Peg'
0
cs_jcdc Messages postés 77 Date d'inscription samedi 9 août 2003 Statut Membre Dernière intervention 23 avril 2009
22 avril 2009 à 16:59
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.
0
pegase31 Messages postés 6138 Date d'inscription dimanche 21 décembre 2003 Statut Modérateur Dernière intervention 4 septembre 2013 12
22 avril 2009 à 17:06
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'
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_jcdc Messages postés 77 Date d'inscription samedi 9 août 2003 Statut Membre Dernière intervention 23 avril 2009
22 avril 2009 à 17:16
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.
0
pegase31 Messages postés 6138 Date d'inscription dimanche 21 décembre 2003 Statut Modérateur Dernière intervention 4 septembre 2013 12
22 avril 2009 à 17:19
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'
0
cs_jcdc Messages postés 77 Date d'inscription samedi 9 août 2003 Statut Membre Dernière intervention 23 avril 2009
23 avril 2009 à 14:12
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.
0
Rejoignez-nous