okay that's kinda what i thought

thanks for your help jason

a

On Tue, Jan 19, 2010 at 5:24 PM, Merrill, Jason <
[email protected]> wrote:

> The view can hold an array of other views, 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

Reply via email to