I am using the Webservice component. It has a built-in onResult event, and
works fine for me. But can't get it to work with Delegate. This works for me:
var getUserResult = new Object();
getUserResult =alreadyLodedWwebserive.DoMethod(arg)
getUserResult.onResult = function(result){
//This works fine for me
//I see the data returned here fine.
}
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 5:09 PM
>>To: 'Flashcoders mailing list'
>>Subject: RE: [Flashcoders] Events for custom classes?
>>
>> Jason,
>>
>>By the look of it, you will never receive an onResult for
>>your getUserListResult ... it's a simple Object and no Method
>>onResult exists for that class that I know of ...
>>
>>What are you using to make your webservice calls ? are you
>>using Flash Remoting ?
>>
>>if so you should use the responder to handle the result.
>>
>>
>>import mx.remoting.Service;
>>import mx.remoting.PendingCall;
>>import mx.rpc.RelayResponder;
>>import mx.rpc.FaultEvent;
>>import mx.rpc.ResultEvent;
>>
>>
>>var myService:Service = new Service( gatewayUrl , null ,
>>serviceName , null, null ); var pc:Pendingcall = new PendingCall();
>>
>>pc.relayResponder(myService, "handleResult", "handleError");
>>
>>well I can't really remember from the top of my head, I'll
>>need to look it up from home, but this is somewhat how you
>>can know when the data has arrived from the webservice.
>>
>>So your class be ends up beeing a Service caller, you can
>>make it a Singleton and use it to fetch different services
>>from your gateway.
>>
>>You should definitely look into the ARP framework (or other similar
>>projects) ... that's how I learned how to best use Design
>>Paterns :) after 2 projets with it, you'll definitely understand :)
>>
>>HTH !
>>
>>Alain
>>
>>
>>-----Original Message-----
>>From: [EMAIL PROTECTED]
>>[mailto:[EMAIL PROTECTED] On Behalf
>>Of Merrill, Jason
>>Sent: 16 février 2007 16:37
>>To: Flashcoders mailing list
>>Subject: RE: [Flashcoders] Events for custom classes?
>>
>>Alain,
>>
>>Been following your suggested method, it's great, and
>>everything works as advertized, except can't get
>>wsResulthandler to fire once the Webservice data is received.
>>
>>Also, how do I send the data from the comboBox change event
>>through to the getWsData function? I need to know the data
>>from the selected item in the combobox, as that is a
>>parameter I sent to the webservice to get the data. I hard
>>coded it a number for now, but it doesn't work because of the
>>first problem.
>>
>>Here is a snippet of the code in "Class B"
>>
>> function getWSdata(lobDbId:Number) {
>> var getUserListResult:Object = new Object();
>> getUserListResult = root_mc.generatorWS.GetUserList(1)
>>//lobDbId);
>> getUserListResult.onResult =
>>Delegate.create(this, wsResulthandler);
>> }
>>
>> function wsResulthandler(data) {
>> _level0.traceMsg("WS Result recieved.")
>> this.dispatchEvent({type:"webServiceResult",
>>newData:data})
>> }
>>
>>Did I set that up right?
>>
>>Thanks,
>>
>>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
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>_______________________________________________
>>>>>>[email protected]
>>>>>>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.
>>>>>>_______________________________________________
>>>>>>[email protected]
>>>>>>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
>>>>>>
>>>>_______________________________________________
>>>>[email protected]
>>>>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
>>>>
>>>>
>>>>_______________________________________________
>>>>[email protected]
>>>>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
>>>>
>>_______________________________________________
>>[email protected]
>>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
>>
>>
>>_______________________________________________
>>[email protected]
>>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
>>
_______________________________________________
[email protected]
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