2009-07-07 8 views
2

Donc, je construis des choses dans AS3, j'ai un clip principal, et j'ai un ensemble de navigation à afficher deux fois (l'une est une configuration normale de la barre latérale , l'autre est une créature de fantaisie chouchou dans le fond). Quand on est cliqué, l'autre devrait réagir pour refléter ce qui s'est passé.OOP: Bestish Practices: Faire parler deux classes

Est-ce que main.menuA doit faire référence à main.menuB, ou devrais-je configurer EventDispatchers et EventListeners de sorte que l'événement passe par Main? ou quand je lance menuA et menuB, devrais-je passer une référence de menuA à menuB et viceversa? Honnêtement, dans ce cas, peu importe, mais je dois empêcher les mauvaises pratiques de devenir de mauvaises habitudes.

Répondre

4

Il est plus judicieux de configurer des événements et de modifier le contrôle correspondant via la fonction principale. Si vous le faisiez dans l'autre sens, chaque contrôle devrait toujours être associé à l'autre, ils ne devraient même pas être conscients l'un de l'autre.

Mais j'ai un léger changement. Vous avez un concept (PlayingStatus). Ce concept est indépendant de la façon dont vous le dessinez sur l'écran (évidemment puisque vous avez deux façons de le faire). Appelons-les Layout1 et Layout2.

Les deux dispositions doivent contenir une référence aux mêmes données PlayingStatus. Quand une mise en page modifie PlayingStatus, la classe PlayingStatus peut déclencher un événement pour chaque propriété (quelles qu'elles soient) en cours de modification. Les deux Layouts seraient à l'écoute de ces événements et se redessineraient quand ils arriveraient.

+1

+1 Pour le modèle-View-Controller. – Sean

+0

Model-View-Presenter (MVP) fonctionne mieux avec Flash –

2

Je vous recommande d'y aller avec les auditeurs et les répartiteurs d'événements. Si vos événements se déclenchent (et que vous définissez la portée de l'écouteur sur le "chemin des bulles"), vous n'avez pas besoin d'une référence directe d'un bouton à l'autre. Assurez-vous de nettoyer les événements lorsque vous détruisez les objets, ou (et) d'utiliser des références faibles.