Pb théorique as3 : addeventlistener, bouton et useCapture

cs_inaden Messages postés 618 Date d'inscription mercredi 4 avril 2007 Statut Membre Dernière intervention 27 août 2010 - 19 mai 2009 à 09:57
cs_inaden Messages postés 618 Date d'inscription mercredi 4 avril 2007 Statut Membre Dernière intervention 27 août 2010 - 19 mai 2009 à 10:55
Bonjour,
J'étudie le livre de Thibault Imbert "Pratique d'actionScript 3. Je suis au chapitre programmation évenementielle et j'ai beau relire je ne comprend pas la notion de useCapture.
Voici le code :
addEventListener ( MouseEvent.CLICK, clicBouton, true);
function clicBouton ( pEvt:MouseEvent ) : void{
    trace("pEvt = "+pEvt);
}
//aucun écouteur n'est enregistré auprès du bouton --> affiche false
trace( monBouton.hasEventListener (MouseEvent.CLICK));
//un écouteur est enregistré auprès d'un des parents du bouton --> affiche true
trace( monBouton.willTrigger (MouseEvent.CLICK));
//un écouteur est enregistré auprès du scénario principal --> affiche true
trace( willTrigger (MouseEvent.CLICK));

Ce que je ne comprend pas c'est que je ne cible pas le bouton et qu'il fonctionne quand même. Pire, si je le cible
monBouton.addEventListener ( MouseEvent.CLICK, clicBouton, true);

Il ne fonctionne plus.
Je ne comprend pas à quoi ça sert.
Si je rajoute un second bouton, et une seconde fonction et un listener sans le true  :
monBouton2.addEventListener ( MouseEvent.CLICK, clicBouton2);

Ce second bouton diffuse les deux fonctions.
Qu'est-ce que cela signifie et... je le répète, à quoi ça sert ?
Merci d'avance pour vos lumières.

Tout vient à qui sait attendre

4 réponses

pegase31 Messages postés 6138 Date d'inscription dimanche 21 décembre 2003 Statut Modérateur Dernière intervention 4 septembre 2013 11
19 mai 2009 à 10:19
bonjour,

Ton écouteur est sur l'objet contenant ton bouton, donc normal que l'appuie sur le bouton (donc sur l'objet) déclenche l'action ...
Donc normal que les deux actions soient déclenchées lors du clic sur ton second bouton.

Peg'
0
cs_inaden Messages postés 618 Date d'inscription mercredi 4 avril 2007 Statut Membre Dernière intervention 27 août 2010 2
19 mai 2009 à 10:45
Ok, mais à quoi sert ce true pour useCapture, parce que si je l'enlève la même chose se passe ?

Tout vient à qui sait attendre
0
cs_inaden Messages postés 618 Date d'inscription mercredi 4 avril 2007 Statut Membre Dernière intervention 27 août 2010 2
19 mai 2009 à 10:50
J'ai compris... si on mets pas true, le bouton indiquera la phase de remonté et pas la phase de capture.
Même si jen'ai pas encore compris à quoi ça sert... ça devrait venir.
Merci pour ta réponse.

Tout vient à qui sait attendre
0
cs_inaden Messages postés 618 Date d'inscription mercredi 4 avril 2007 Statut Membre Dernière intervention 27 août 2010 2
19 mai 2009 à 10:55
Et pour préciser :
addEventListener ( MouseEvent.CLICK, clicBouton,true);
//avec true phase de capture
//sans true phase de remonté

monBouton2.addEventListener ( MouseEvent.CLICK, clicBouton);
//avec true : phase de capture
//sans true phase cible

Donc, quand on spécifie true on se focalise sur la phase de capture (descendante si j'ai bien compris)
Quand on ne le spécifie pas, si on cible le bouton sur le listener on s'arrête sur la phase de capture puisque c'est le moment ou le bouton émet l'action, si par contre on cible la scène (premier cas), c'est au moment de la phase de remonté que l'action est émise.

C'est ça ????

Tout vient à qui sait attendre
0
Rejoignez-nous