Hello :)

non justement le controller faut pas qu'il fasse le addEventListener... faut
pas qu'il est de dépendance avec le dispatcher d'événement ;)

En général .. avec une gallery d'image par exemple tu as un modèle avec les
actions suivantes :

- ajouter une image dans le modèle
- effacer le modèle
- supprimer une image dans le modèle
- sélectionner une image

Cela donne les événements suivant :

EventList.ADD_PICTURE
EventList.CLEAR_PICTURE
EventList.CHANGE_PICTURE
EventList.REMOVE_PICTURE

Pour chaque événement tu crée un controller :

AddPicture
ClearPicture
ChangePicture
RemovePicture

Dans mon cas ces classes implémentent l'interface EventListener et donc ont
une méthode handleEvent(e:Event):void

Ensuite tu remplis ton FrontController :

var front:FrontController = new FrontController() ;

front.add( EventList.ADD_PICTURE , new AddPicture() ) ;
front.add( EventList.CLEAR_PICTURE , new ClearPicture() ) ;
front.add( EventList.CHANGE_PICTURE , new ChangePicture() ) ;
front.add( EventList.REMOVE_PICTURE , new RemovePicture() ) ;

Du coup quand tu gères ton modèle, faut qu'il diffuse ses événements sur le
flux global (celui qui écoute le FrontController)

et bien entendu il faut que ton modèle notifie ses événements avec les types
spécificiques définis dans ton frontcontroller.

Ensuite tu peux utiliser un pattern locator ou d'injection de dépendance
dans tes controllers pour avoir les références vers les objets visuels (ou
autres) et ainsi alimenter tes vues, etc....

Exemple complet dans AST'r avec eGallery :

http://code.google.com/p/astr/source/browse/#svn/trunk/AS3/trunk/examples/egallery/trunk

EKA+ :)


Le 11 mars 2009 20:55, Gwenn Guihal <[email protected]> a écrit :

> Hello, ben dis donc, quelle réponse pour une simple question. :)
> Merci à toi en tout cas !
>
> Donc avant de lire tes liens, je pose mon code et reformule un peu mon
> speech.
>
> J'utilise en effet l'architecure MVC ou quelque chose de similaire.
> Pour chaque module, j'ai une ou plusieurs vues, un controller et un model.
> Mes controllers communiquent entre via un singleton, appellé Navigator. (Si
> j'ai bien compris ce que tu m'as dit, il faudrait mieux avoir un
> FrontCrontroller qui contient une référence de chaque controller ?)
> Et donc, par exemple mon controller Arnold (ArnoldController) va notifier
> BernardController de cette façon :
>
> sur ArnoldController ;
> Navigator.instance.dispatchEvent(new NavigatorEvent(NavigatorEvent.SALUT));
>
> sur BernardController :
> Navigator.instance.addEventListener(NavigatorEvent.SALUT,listenerHandler);
>
> Mais ArnoldController utilise un vo (RobertVO), ainsi que
> BernardController.
> Ainsi ma question était, comment envoyé RobertVO à BernadController ?
>
> 1) via la propriété data:Object de NavigatorEvent
> 2) utilisé un singleton qui stocke mon objet
> 3) ?
>
> Voilà, je m'en vais feuilleter tes documents maintenant.
> Merci bien en tout cas !
>
> ++
>
>
> Le 11 mars 09 à 18:25, ekameleon a écrit :
>
> Hello :)
>
> Tu aurais des petits exemples de code ? Car là c'est un peu flou tout ce
> que tu dis :)
>
> Tu nous parles de singleton, de module, etc... c'est pas forcément super
> clair ;)
>
> Pour ma part j'utilise un FrontController dans mes applications et un
> dispatcher d'événement global avec une notion de channel pour lier les 2 :
>
> http://code.google.com/p/maashaack/wiki/TutorialsEvents_multi
> http://code.google.com/p/maashaack/wiki/TutorialsEvents_frontcontroller
>
> Du coup j'ai la possibilité d'échanger des événements facilement vers des
> controller/eventlistener simple via l'interface EventListener basée sur les
> normes du event model W3C :
>
> http://code.google.com/p/maashaack/wiki/TutorialsEvents_intro
>
> Du coup... dans tout ce que tu dis au dessus faut cerner la notion de MVC
> (Design Pattern Model/View/Controller) et du coup si je peux considérer que
> les vues de ton application c'est les "modules" et les données devront être
> stockées dans un ou des modèles, suffira ensuite de les mettre en relation
> via un FrontController simple pour des types d'événements spécialisés.
>
> Bref, pour résumer :
>
> 1 - tu nous montres pas de code d'exemple sur ce que tu fais (pas besoin de
> tout ton code, pas besoin de tout nous mettre sur le FCNG non plus car cela
> ne sera pas lisible.. un petit envoi de fichier avec un lien ou un mail ce
> sera très bien)
>
> 2 - Méfie toi de la notion de singleton... cela devient vite un
> anti-pattern d'en mettre partout dans une application.
>
> Pour ma part les singletons je les gère via une fabrique et j'utilise à 99%
> maintenant le Design Pattern d'injection de dépendance pour éviter les
> soucis et mettre les objets en relations les uns avec les autres :)
>
> Je t'invite à lire le premier chapitre de mon ebook (en cours d'écriture)
> sur le sujet :
>
>
> http://www.ekameleon.net/blog/index.php?post/2008/07/21/A-Design-Pattern-dinversion-de-controle-Generalites
>
> Ensuite je te conseille de lire un peu des articles sur le Design Pattern
> MVC en restant bien ouvert sur ce concept... car il y a des tas de manières
> de l'utiliser et de l'implémenter et au final il faut avant tout bien cerner
> le concept...
>
> Exemple :
>
>
> http://www.ekameleon.net/blog/index.php?post/2006/12/22/56-vegas-tutorial-03-design-pattern-mvc-with-frontcontroller
>
> http://www.ekameleon.net/blog/index.php?post/2006/12/22/57-vegas-tutorial-03-design-pattern-mvc-with-frontcontroller-partie2
>
> Les exemples ci dessus sont en AS2 mais sont applicables sans soucis en AS3
> :)
>
> Maintenant je te conseille de regarder rapidement l'exemple AS3 de MVC avec
> un FrontController sur mon google code :
>
>
> http://code.google.com/p/andromed-as/source/browse/#svn/trunk/AS3/trunk/bin/tutorials/andromeda/mvc
>
> Il n'y a pas beaucoup de classe est si tu prends un peu de temps pour lire
> la doc au dessus et pour regarder le code de cet exemple tu verras que c'est
> assez simple à implémenter :)
>
> L'idée est donc de centraliser les informations (événements) et de les
> faire passer dans un front controller pour les rediriger vers des
> controllers simples et spécialisés pour chaque action importante dans ton
> application. Ainsi tu as la possibilité d'éviter au MAXIMUM les dépendances
> entre tes objets (vues, modèles, données...)
>
> Pas assez de temps pour rentrer dans le détail :) Si tu veux de l'aide faut
> nous montrer du vrai code sinon pour le moment on peut te donner que des
> idées et de la lecture ;)
>
> EKA+ :)
>
> Le 11 mars 2009 18:10, Gwenn Guihal <[email protected]> a écrit :
>
>> Hello,
>>
>> Je développe actuellement une application en Flash, qui se veut le plus
>> modulaire possible.
>> Donc j'ai des modules qui communique entre eux via
>> des événements personnalisés, ces événements sont dispatchés via un
>> singleton accessible par chaque module.
>>
>> Je me posais une question:
>>
>> J'ai un module qui modifie un objet.
>> Je dispatch un event, pour dire à un autre module de réaliser une action
>> en utilisant cet objet.
>>
>> La question est :
>> -> Vaut mieux passer cet objet dans mon event, via un paramètre
>> "data:Object" ?
>> -> Ou bien stocker cet objet dans un singleton afin qu'il soit accessible
>> par mes deux modules ?
>> -> Une autre solution super classe ?
>>
>> Merci d'avance,
>>
>> ++
>>
>> Gwenn
>>
>>
>>
>>
>>
>>
>>
>>
>>
>
>
>
>
>
> >
>

--~--~---------~--~----~------------~-------~--~----~
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
-~----------~----~----~----~------~----~------~--~---

Répondre à