Hi Jason,

I have my own implementation of AsBroadcaster/EventDispatcher (bundling both
in one class), which is very flexible and can be used with inheritance or
composition (But unlike the standard implementations, it's not a mix-in
class). If you'd like me to send you the class, just let me know.

Karina
 

> -----Original Message-----
> From: Merrill, Jason [mailto:[EMAIL PROTECTED] 
> Sent: 16 February 2007 20:16
> To: Flashcoders mailing list
> Subject: RE: [Flashcoders] Events for custom classes?
> 
> Thanks Alain, will revist it that way instead.
> 
> Jason Merrill
> Bank of America
> Learning & Organizational Effectiveness
>  
>  
>  
>  
>  
>  
> 
> >>-----Original Message-----
> >>From: [EMAIL PROTECTED]
> >>[mailto:[EMAIL PROTECTED] On 
> Behalf Of Alain 
> >>Rousseau
> >>Sent: Friday, February 16, 2007 3:01 PM
> >>To: 'Flashcoders mailing list'
> >>Subject: RE: [Flashcoders] Events for custom classes?
> >>
> >>Jason,
> >>
> >>So if I understand clearly what you want to do is :
> >>
> >>>From Class A : (pseudo code following)
> >>
> >>class ClassA {
> >>    private var instClassB:ClassB;
> >>    make comboBox
> >>    make datagrid
> >>    function ClassA() {
> >>            instClassB = new ClassB();
> >>            comboBox.onChange = Delegate.create(this, 
> cbChangeHandler);
> >>            instClassB.addEventListener("webServiceResult", this);
> >>    }
> >>
> >>    function cbChangeHandler(e){
> >>            instClassB.getWSdata(e.value);
> >>    }
> >>
> >>    function webServiceResult(evtObj:Object) {
> >>            update datagrid with evtObj.newData
> >>    }
> >>
> >>}
> >>
> >>class ClassB {
> >>    Decorate with EventDispatcher methods
> >>    dispatchEvent, addEventListener, removeEventListener
> >>
> >>    function ClassB() {
> >>            EventDispatcher.initialize(this);
> >>    }
> >>    
> >>    function getWSdata(val) {
> >>            get data from web service
> >>            wsInstance.onResult = Delegate.create(this, 
> wsResulthandler);
> >>    }
> >>    
> >>    function wsResulthandler(data) {
> >>            this.dispatchEvent({type:"webServiceResult",
> >>newData:data}) // add anything you want to pass in the object
> >>    }
> >>}
> >>
> >>Now you have them both communication the way you want
> >>
> >>Have fun !
> >>
> >>Alain
> >>
> >>-----Original Message-----
> >>From: [EMAIL PROTECTED]
> >>[mailto:[EMAIL PROTECTED] On Behalf Of 
> >>Merrill, Jason
> >>Sent: 16 février 2007 14:36
> >>To: Flashcoders mailing list
> >>Subject: RE: [Flashcoders] Events for custom classes?
> >>
> >>Daniel, try as I may, I can't get your code to work.  I have one 
> >>class, which has a combobox.  I can get the event to fire when the 
> >>combobox changes just fine, but I can't get it to "hear" 
> the firing of 
> >>the data capture from the webservice in the other class.
> >>
> >>So basically, in pseudocode, I need to do this:
> >>
> >>class A{
> >>    make comboBox
> >>    make datagrid
> >>    when comboBox changes, use Class B
> >>            to get data from webservice
> >>    when webservice result received, 
> >>                    update datagrid with new data
> >>
> >>}
> >>
> >>class B{
> >>    connect to webservice   
> >>    when requested, return data to requesting class }
> >>
> >>Reason I want these two classes to be separate is because I 
> want other 
> >>classes to call Class B to get data as well.  So, I can do all of 
> >>those things just fine, they are all working, except for the last 
> >>part, "when requested, return data to requesting class" - I figure 
> >>since the webservice is asynchronous, I need to capture the 
> received 
> >>event, which is fine, I can do, that works.  But I need to 
> tell Class 
> >>A to update the datagrid with the new data when it gets it 
> from Class 
> >>B - so an event model is required.
> >>
> >>in your code, you have a var r in both the "Class A" and 
> "Class B" - 
> >>I'm confused about that.  Thanks for any help.
> >>
> >>
> >>Jason Merrill
> >>Bank of America
> >>Learning & Organizational Effectiveness
> >> 
> >> 
> >> 
> >> 
> >> 
> >> 
> >>
> >>>>-----Original Message-----
> >>>>From: [EMAIL PROTECTED]
> >>>>[mailto:[EMAIL PROTECTED] On
> >>Behalf Of Holth,
> >>>>Daniel C.
> >>>>Sent: Friday, February 16, 2007 10:36 AM
> >>>>To: Flashcoders mailing list
> >>>>Subject: RE: [Flashcoders] Events for custom classes?
> >>>>
> >>>>
> >>>>Here is your code modified to use the EventDispatcher:
> >>>>
> >>>>import mx.events.EventDispatcher; // import the event dispatcher
> >>>>
> >>>>class com.boa.projects.iqrcgenerator.components.AdminData{
> >>>>  public var addEventListener:Function; // Set the functions
> >>>>  public var removeEventListener:Function; // Set the functions
> >>>>  private var dispatchEvent:Function; // Set the functions
> >>>>
> >>>>  private var userData:Object;
> >>>>
> >>>>  // I'm sure you have a different constructor, but you need
> >>>>  // to add that line to it if you want to use the eventdispatcher
> >>>>  public function AdminData(){
> >>>>          mx.events.EventDispatcher.initialize(this); //
> >>add this to
> >>>>constructor
> >>>>  }
> >>>>
> >>>>  public function wsUserDataByLOB(lobDbId:Number):Void{
> >>>>          var getUserListResult:Object = new Object();
> >>>>          getUserListResult =
> >>>>generatorWebService.GetUserList(lobDbId);
> >>>>
> >>>>          var r = this;  // To get this in onResult
> >>>>          getUserListResult.onResult = function(oUser){
> >>>>
> >>>>                  r.dispatchEvent({type:"eventOnResult",
> >>>>user:oUser}); // Dispatch the event
> >>>>  
> >>>>
> >>>>          }
> >>>>  }
> >>>>
> >>>>
> >>>>  // I may just take this function out all together since
> >>the event
> >>can
> >>>>  // autommatically send them the data.
> >>>>  public function getUserData():Object{
> >>>>          return userData;
> >>>>  }
> >>>>}
> >>>>
> >>>>
> >>>>Then in your other class you can do something like:
> >>>>
> >>>>//myAdminData is an instance of the class above
> >>>>
> >>>>var r = this;
> >>>>r.eventOnResult= function(evtObj:Object){
> >>>>  trace("user: " + evtObj.user);  // Should return the
> >>oUser object }
> >>>>// addEventListener takes the event name, and who you want
> >>to listen
> >>>>myAdminData.addEventListener("eventOnResult", r);
> >>>>
> >>>>
> >>>>
> >>>>Does that help?  I obviously can't test the code, but I think 
> >>>>everything is right...  I have trouble with scope, which is why I 
> >>>>use a lot of 'r'
> >>>>values instead of 'this'... Just easier for me... Probably not a 
> >>>>good coding standard :)
> >>>>
> >>>>-Dan
> >>>>
> >>>>-----Original Message-----
> >>>>From: [EMAIL PROTECTED]
> >>>>[mailto:[EMAIL PROTECTED] On Behalf Of 
> >>>>Merrill, Jason
> >>>>Sent: Friday, February 16, 2007 9:03 AM
> >>>>To: Flashcoders mailing list
> >>>>Subject: [Flashcoders] Events for custom classes?
> >>>>
> >>>>OK, I'm pretty good at Actionscript 2.0, but something I never 
> >>>>really understood and now need to.
> >>>>
> >>>>Core question:  How do I make an event in a custom class, 
> and how do 
> >>>>I make a listener in another class listen for the event?
> >>>>
> >>>>
> >>>>EventBroadcaster in the help docs seems to only show how 
> to use it 
> >>>>with Adobe classes and components. Docs on listener are 
> the same.  I 
> >>>>know how to set up listeners for other events, like 
> keypresses and 
> >>>>mouse rollovers.  Easy enough.
> >>>>But my problem is this (see comments in code
> >>>>below):
> >>>>
> >>>>class com.boa.projects.iqrcgenerator.components.AdminData{
> >>>>
> >>>>
> >>>>  private var userData:Object;
> >>>>
> >>>>  public function wsUserDataByLOB(lobDbId:Number):Void{
> >>>>          var getUserListResult:Object = new Object();
> >>>>          getUserListResult =
> >>>>generatorWebService.GetUserList(lobDbId);
> >>>>          getUserListResult.onResult = function(oUser){
> >>>>                  //this works fine,
> >>>>
> >>>>                  //I can capture this event result here,
> >>>>                  //but how do I notify another class?
> >>>>                  //also what about scope here?
> >>>>                  //how to set userData as oUser result?
> >>>>                  //can I fire an event in my AdminData
> >>>>                  //class from here?
> >>>>          }
> >>>>  }
> >>>>
> >>>>
> >>>>  public function getUserData():Object{
> >>>>          //can't let user get this data
> >>>>          //until Webserive event is done.
> >>>>          return userData;
> >>>>  }
> >>>>}
> >>>>
> >>>>Thanks,
> >>>>
> >>>>
> >>>>Jason Merrill
> >>>>Bank of America
> >>>>
> >>>>Learning & Organizational Effectiveness
> >>>>
> >>>>
> >>>>
> >>>>
> >>>>_______________________________________________
> >>>>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
> >>>>
> >>>>This e-mail and its attachments are intended only for the 
> use of the 
> >>>>addressee(s) and may contain privileged, confidential or 
> proprietary 
> >>>>information. If you are not the intended recipient, or 
> the employee 
> >>>>or agent responsible for delivering the message to the intended 
> >>>>recipient, you are hereby notified that any dissemination, 
> >>>>distribution, displaying, copying, or use of this information is 
> >>>>strictly prohibited. If you have received this communication in 
> >>>>error, please inform the sender immediately and delete 
> and destroy 
> >>>>any record of this message. Thank you.
> >>>>_______________________________________________
> >>>>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
> >>
> >>
> >>--
> >>No virus found in this incoming message.
> >>Checked by AVG Free Edition.
> >>Version: 7.1.412 / Virus Database: 268.18.0/689 - Release
> >>Date: 2007-02-15
> >> 
> >>
> >>--
> >>No virus found in this outgoing message.
> >>Checked by AVG Free Edition.
> >>Version: 7.1.412 / Virus Database: 268.18.0/689 - Release
> >>Date: 2007-02-15
> >> 
> >>
> >>_______________________________________________
> >>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
> 

_______________________________________________
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