>> Any new views can request to be added to the listener/notify list using the observer pattern, as in "please inform me too, if things change".
Right - I was trying to keep things simple for the poster. Jason Merrill Bank of America Global Learning Learning & Performance Soluions Join the Bank of America Flash Platform Community and visit our Instructional Technology Design Blog (note: these are for Bank of America employees only) -----Original Message----- From: [email protected] [mailto:[email protected]] On Behalf Of John McCormack Sent: Tuesday, January 19, 2010 2:43 PM To: Flash Coders List Subject: Re: [Flashcoders] Using MVC for a site framework Merrill, Jason wrote: > The view can hold an array of other views, Any new views can request to be added to the listener/notify list using the observer pattern, as in "please inform me too, if things change". John > when the main view is told to > build by the controller, it iterates through the array to tell the other > view instances or whatever. Shouldn't be hard to implement. My method > does not depend on a single view, it's really just how you want to > structure it. It will also allow the controller to tell a particular > view to build, i.e.: > > //in the controller: > > private function onSomething(event:Event):void > { > if(somethingSpecial) _mvc.view.mySpecialView.build(); > } > > > Jason Merrill > > Bank of America Global Learning > Learning & Performance Soluions > > Join the Bank of America Flash Platform Community and visit our > Instructional Technology Design Blog > (note: these are for Bank of America employees only) > > > > > > > -----Original Message----- > From: [email protected] > [mailto:[email protected]] On Behalf Of allandt > bik-elliott (thefieldcomic.com) > Sent: Tuesday, January 19, 2010 12:05 PM > To: Flash Coders List > Subject: Re: [Flashcoders] Using MVC for a site framework > > very cool jason - thanks > > just a quick question - this setup works perfectly where the number of > views > is known, but how would you implement that with an unknown amount of > views? > or is this the setup for the root view with all other views being > add()ed to > it? > > thanks mate > a > > On Tue, Jan 19, 2010 at 4:35 PM, Merrill, Jason < > [email protected]> wrote: > > >> This is my opinion, I'm sure others will have their own that may >> > differ > >> (and probably recommend you check out some frameworks - though that >> > can > >> be a lot to tackle) : the controller would listen to the model to >> > know > >> when the data is ready and available. It would then tell the view to >> start building. The main class would hold the references to the >> > model, > >> view, controller, but would not command any classes to do anything >> really. You could have the view listen to the model as well and skip >> the controller doing it, but I like the view to be more decoupled than >> that. I usually try and keep most listeners in the controller where >> possible, though many end up in the view, depending on the situation. >> > I > >> never have listeners in the model though, only events that are >> dispatched. >> >> I actually have the model start and do it's own XML loading, but you >> could have the controller tell it to do that, just seems like an >> unnecessary step. >> >> Another thing I do is have a main class called MVC that extends Sprite >> or DisplayObject which initializes the model, view, controller, in >> order, dispatches an event when all three are initialized, and >> > provides > >> access to each via a singleton implementation. It allows me to access >> any part of a model, view, controller from any other part just by >> calling MVC.instance. Then it's just var _mvc:MVC = MVC.instancel; >> > then > >> _mvc.model.myprop or _mvc.view.update() or whatever. That class looks >> like this: >> >> package mvc >> { >> import events.MVCEvent; >> import events.view.ViewEvent; >> import events.controller.ControllerEvent; >> import events.model.ModelEvent; >> import mvc.controller.Controller; >> import mvc.model.Model; >> import mvc.view.View; >> import flash.display.Sprite; >> /** >> * ... >> * @author Jason Merrill - Bank of America >> */ >> public class MVC extends Sprite >> { >> public var view:View; >> public var model:Model; >> public var controller:Controller; >> >> private static var _instance:MVC; >> >> public function MVC() >> { >> if ( _instance != null ) >> { >> throw new Error( "Only one MVC instance should be >> instantiated. Use MVC.instance instead." ); >> } >> else >> { >> _instance = this; >> } >> } >> >> public function initialize():void >> { >> model = new Model(); >> view = new View(); >> controller = new Controller(); >> >> model.addEventListener(ModelEvent.INITIALIZED, >> onModelInitialized); >> >> controller.addEventListener(ControllerEvent.INITIALIZED, >> onControllerInitialized); >> view.addEventListener(ViewEvent.INITIALIZED, >> onViewInitialized); >> >> model.initialize(); >> } >> >> private function >> onModelInitialized(event:ModelEvent):void >> { >> >> model.removeEventListener(ModelEvent.INITIALIZED, onModelInitialized); >> view.initialize(); >> } >> >> private function >> > onViewInitialized(event:ViewEvent):void > >> { >> addChild(view); >> view.removeEventListener(ViewEvent.INITIALIZED, >> onViewInitialized); >> controller.initialize(); >> } >> >> private function >> onControllerInitialized(event:ControllerEvent):void >> { >> >> controller.removeEventListener(ControllerEvent.INITIALIZED, >> onControllerInitialized); >> dispatchEvent(new >> MVCEvent(MVCEvent.INITIALIZED)); >> } >> >> public static function get instance():MVC >> { >> if ( _instance == null ) >> { >> throw new Error( "MVC singleton instance not created >> yet." ); >> } >> return _instance; >> } >> } >> >> } >> >> >> Jason Merrill >> >> Bank of America Global Learning >> Learning & Performance Soluions >> >> Join the Bank of America Flash Platform Community and visit our >> Instructional Technology Design Blog >> (note: these are for Bank of America employees only) >> >> >> >> >> >> -----Original Message----- >> From: [email protected] >> [mailto:[email protected]] On Behalf Of >> > allandt > >> bik-elliott (thefieldcomic.com) >> Sent: Tuesday, January 19, 2010 11:09 AM >> To: Flash Coders List >> Subject: [Flashcoders] Using MVC for a site framework >> >> Hi guys >> >> I'm currently feeling my way through the o'reilly design patterns book >> and >> am going through the mvc design pattern as a way of dealing with >> (micro)site >> structures - dealing with opening and closing pages, loading data etc >> but i >> have a couple of questions that you guys will probably be able to >> answer... >> >> i have a config xml file that points to the data xml, site css and >> fonts.swf. I take it that the controller should have the >> > responsibility > >> of >> loading those files and storing the results in the model. However if i >> include the site structure in the data xml as i would usually do, >> > which > >> part >> of the triad should be instantiating the views to create the pages? >> > The > >> book >> is set up that the Main.as class would be instantiating the views and >> creating the site structure but that doesn't fit if the controller is >> loading the xml files into the model. >> >> I would guess that the controller would trawl the xml and instantiate >> the >> page views and add them to the model but i'm not 100% on this >> >> I'd really appreciate your time on this matter as I'd like to build a >> set of >> classes that work with more than one project >> >> thanks >> a >> _______________________________________________ >> Flashcoders mailing list >> [email protected] >> http://chattyfig.figleaf.com/mailman/listinfo/flashcoders >> _______________________________________________ >> Flashcoders mailing list >> [email protected] >> http://chattyfig.figleaf.com/mailman/listinfo/flashcoders >> >> > _______________________________________________ > Flashcoders mailing list > [email protected] > http://chattyfig.figleaf.com/mailman/listinfo/flashcoders > _______________________________________________ > Flashcoders mailing list > [email protected] > http://chattyfig.figleaf.com/mailman/listinfo/flashcoders > > > _______________________________________________ Flashcoders mailing list [email protected] http://chattyfig.figleaf.com/mailman/listinfo/flashcoders _______________________________________________ Flashcoders mailing list [email protected] http://chattyfig.figleaf.com/mailman/listinfo/flashcoders

