Hello :)
Pour propager des événements tu as :
1 - la phase de capture (root vers ton diffuseur d'événements)
2 - la phase de "target" qui est celle classique de ton diffuseur
d'événement qui diffuse vers ses écouteurs
3 - la phase de bubbling qui redescend dans l'autre sens de ton target vers
le root
Pour cabler un objet enfant comme diffuseur d'événement sur la phase de
capture il suffit de passer ton écouteur en mode capture dans la méthode
addEventListener (faut lire la doc)
var debug:Function = function( e:Event ):void
{
trace( e.type + " target:" + e.target + " currentTarget:" +
e.currentTarget) ;
}
var parent:DisplayObject = new Sprite() ;
var dispatcher = new Sprite() ;
addChild( parent ) ; // j'attache sur le root le Sprite "parent"
parent.addChild( dispatcher ) ; // j'attache dans "parent" mon diffuseur
d'événement principal (bouton ou autre...)
this.addEventListener( "my_event", debug , true ) ; // capture
parent.addEventListener( "my_event", debug , true ) ; // capture
dispatcher.addEventListener( "my_event" , debug ) ; // écoute la phase
target
parent.addEventListener( "my_event", debug ) ; // bubbling
this.addEventListener( "my_event", debug ) ; // bubbling
// test 1 - propagation sur phase capture et phase target uniquement
dispatcher.dispatchEvent( new Event("my_event") ) ;
// test 2 - propagation sur phase capture + target + bubbling
dispatcher.dispatchEvent( new Event("my_event", true) ) ;
Mais bon... là c'est la base... je pense que tu as bien compris comme j'ai
pu le lire dans ta question qu'il faut tout cabler à la main pour les
addEventListener... et personnellement j'aime pas trop me prendre la tête
avec les propagations de ce type .. en général avec un modèle, un front
controller simple et des événements diffusés comme il faut .. pas besoin de
se prendre la tête avec les propagations.
EKA+ :)
dispat
Le 30 décembre 2008 22:30, Gwenn Guihal <[email protected]> a écrit :
>
> Normalement, dans ton Player (parent), tu as une référence à tes
> enfants (boutons, etc...). Donc au lieu de propager des events,
> pourquoi ne pas utiliser des méthodes public ? C'est en tout cas ce
> que je ferai.
>
> Le 30 déc. 08 à 20:09, dafunker a écrit :
>
> >
> > Salut tout le monde et bonnes fetes ! :)
> >
> >
> > Je suis actuellement en train de developper un petit player video qui
> > marche de la facon suivante :
> >
> > Le player est un clip qui contient differents elements
> > d'interface, dont PLAY, PAUSE, MUTE, VOLUME BAR, etc.
> > Chaque element d'interface dispatch des evenements en executant
> > par exemple : dispatchEvent(new PlayerUIEvent(PlayerUIEvent.MUTE,
> > true, false));
> >
> > Le bubbling est donc defini a true afin que la class Player, objet
> > parent des elements interface, recoivent cet evenement.
> > Jusque l'a tout va bien.
> >
> > Je souhaite ensuite que le Player dispatch un evement a TOUS ses
> > enfants, dispatchEvent(new PlayerEvent(PlayerEvent.VOLUME, true,
> > false, 0));
> >
> > La question est : Est-ce possible de faire propager cet evenement a
> > tous les enfants grace a un bubbling inverse ? (HAUT vers le BAS)
> > ou d'une autre maniere, Suis-je oblige, dans ce cas precis, de faire
> > des Player.addEventListener(PlayerEvent.VOLUME,
> > handle_volume_changed); ? Dans ce dernier cas, je devrais faire pas
> > mal d'addEventListener et cela m'oblige a avoir une reference au
> > conteneur Player (qui peut ne pas etre simplement situe dans 'parent'
> > puisqu'un bouton pourrait etre egalement mis 1 niveau plus bas).
> >
> > En esperant ne pas poser une question trop conne et si jamais vous
> > aviez une meilleure idee pour developper ce player video, n'hesitez
> > surtout pas, merci :)
> > >
>
>
> >
>
--~--~---------~--~----~------------~-------~--~----~
Vous avez reçu ce message, car vous êtes abonné au groupe Groupe "FCNG" de
Google Groupes.
Pour transmettre des messages à ce groupe, envoyez un e-mail à
l'adresse [email protected]
Pour résilier votre abonnement à ce groupe, envoyez un e-mail à
l'adresse [email protected]
Pour afficher d'autres options, visitez ce groupe à l'adresse
http://groups.google.com/group/FCNG?hl=fr
-~----------~----~----~----~------~----~------~--~---