Wow!

Thanks Stacey - that's far more than 2 cents worth! I'm reading and absorbing - but will need to spend a little more time with your reply :-)


-------------------------------------------------------
[EMAIL PROTECTED]
917-750-6398
AIM: dcardena
-------------------------------------------------------




On Apr 12, 2006, at 9:38 PM, <[EMAIL PROTECTED]> wrote:

My two cents -

EventDispatcher you use as a mixin, which basically means its a class you
don't use solely on its own, and its purpose is to dynamically add
something to object you mix it into. The members or functions of that
mixin class basically get added to your class (to the prototype object - someone feel free to correct me if I am wrong - this is my understanding).
EventDispatcher affords you 3 primary functions you use -
addEventListener,removeEventListener and dispatchEvent. Mixing in a class is an effective way to get additional functionality without inheriting -
as AS doesn't support multiple inheritance.

With EventDispatcher you can mix it in- in a couple of ways. You can
initialize the class itself to be a broadcaster
(EventDispatcher.initialize(this)), you can utilie composition and have an
 object which will then be the event source ( like adding an object in
your class that takes care of all the broadcasting responsibilities) and
there's another way I havent' seen implemented too often where you pass
the class protoype - in fact the first time I saw this approach was on
darron schall's blog
(http://www.darronschall.com/weblog/archives/000100.cfm).

Delegate is a class that basically delegates/proxies the call. IN the
past, to do somethign like load in xml and then call a function in the
class, you would often see people do something like:

myXML=new XML());
myXML.host=this;// or myXML["host"]=this;
myXML.onLoad=function(){
   this.host.parseLoadedXML();
}
myXML.load("file.xml");

WITH Delegate it takes care of making sure items are called in the scope
you designate, taking the scope/object and the function it should fire.
myXML=new XML());
myXML.onLoad=Delegate.create(this,parseLoadedXML);
myXML.load("file.xml");

Delegate returns you a function. You can retain a reference to that
function by going somethign like:
var d:Function=Delegate.create(this,onHandleMethod);

You often see people use delegates this way as well:
buttonComponent.addEventListener("click",Delegate.create(this,onButtonC lick));

This is handy- but if you have to remove that listener at a point in time,
you have no reference to it in order to remove it, so clean up becomes
hard. I usually create a variable to hold the reference and pass it in:
public var delegateItem:Function;

delegateItem=Delegate.create(this,onButtonClick);
buttonComponent.addEventListener("click",delegateItem);


THen when i have to remove:
buttonComponent.removeEventListener("click",delegateItem);


I guess I am feeling verbose tonight. Anyone, jump in and correct me where
I might and possibly be wrong :)









_______________________________________________
Flashcoders@chattyfig.figleaf.com
To change your subscription options or search the archive:
http://chattyfig.figleaf.com/mailman/listinfo/flashcoders

Brought to you by Fig Leaf Software
Premier Authorized Adobe Consulting and Training
http://www.figleaf.com
http://training.figleaf.com


_______________________________________________
Flashcoders@chattyfig.figleaf.com
To change your subscription options or search the archive:
http://chattyfig.figleaf.com/mailman/listinfo/flashcoders

Brought to you by Fig Leaf Software
Premier Authorized Adobe Consulting and Training
http://www.figleaf.com
http://training.figleaf.com

Reply via email to