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
>>>>
>>>>
>>>>
>>>>
>>>>_______________________________________________
>>>>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


--
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

Reply via email to