Using anonymous functions as event handlers isn't recommended, as they
have worse performance than using methods.
 
- Gordon

________________________________

From: [email protected] [mailto:[EMAIL PROTECTED] On
Behalf Of Troy Gilbert
Sent: Wednesday, February 14, 2007 9:44 PM
To: [email protected]
Subject: Re: [flexcoders] Re: addEventListener and additional arguments?



Remember, functions are objects to (so you can treat them like fancy
functors in C++):


var functor:Function = function(arg:String):String { return arg +
functor["param"]; } 
functor["param"] = "dolly";
trace(functor("hello"); // outputs "hellodolly"


or, for events:


var myEventHandler:Function = function(event:MouseEvent):void {
trace(myEventHandler["extraData"]); }
myEventHandler["extraData"] = "hellodolly";
this.stage.addEventListener(MouseEvent.CLICK , myEventHandler);
// when you click on the stage, you'll get the debug message
"hellodolly"



This'll give you what you're looking for. Not sure what the best way to
copy a "functor" object would be... but you could definitely just create
a new, separately named Function object for each form item that wraps
your function, passing in the the "extraData". 

Troy.



On 2/14/07, Gordon Smith < [EMAIL PROTECTED] <mailto:[EMAIL PROTECTED]>
> wrote: 

        

        Here's an example of what I meant:
         
        <?xml version="1.0" encoding="utf-8"?>
        <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml
<http://www.adobe.com/2006/mxml> "> 
         
            <mx:Script>
            <![CDATA[
           
                private var foo:int = 7;
          
                private function clickHandler(event:MouseEvent):void
                {
                    trace(foo);
                }
         
             ]]>
             </mx:Script>
         
            <mx:Button click="clickHandler(event)"/>
         
        </mx:Application>
        
        Note that the Button's clickHandler() can access the instance
variable 'foo', despite the fact that 'foo' isn't passed to
clickHandler() and 'foo' isn't a property of event.target, which is the
Button.
         
        The reason that clickHandler() can access 'foo' is that when
clickHandler() executes, 'this' is the Application (or whatever
component you're writing).
         
        - Gordon

________________________________

        From: [email protected] [mailto:flexcoders@
yahoogroups.com <http://yahoogroups.com> ] On Behalf Of darylgmyers
        Sent: Wednesday, February 14, 2007 7:42 AM
        To: [email protected]
        Subject: [flexcoders] Re: addEventListener and additional
arguments?
        
        
        

        Gordon,
        I'm pretty new to Flex so I appologize for the additional
question.
        
        Are you saying that I can add an instance property to the target
so 
        that it will be available in the event.target? What I'm actually

        doing is creating a set of form fields on the fly using action 
        script. Some of these fields may be number types with a
precision 
        value. My formatting is done with an event listener which I need
to 
        be able to pass the precision value. 
        
        --- In [email protected]
<mailto:flexcoders%40yahoogroups.com> , "Gordon Smith" <[EMAIL PROTECTED]>
wrote:
        >
        > There should be no need to pass additional arguments to the
event
        > handler method, because -- assuming it is indeed a method of a

        class --
        > it can access all the instance properties of that class. So
just 
        set an
        > instance property.
        > 
        > - Gordon
        > 
        > ________________________________
        > 
        > From: [email protected]
<mailto:flexcoders%40yahoogroups.com>  
        [mailto:[email protected]
<mailto:flexcoders%40yahoogroups.com> ] On
        > Behalf Of darylgmyers
        > Sent: Tuesday, February 13, 2007 1:42 PM
        > To: [email protected]
<mailto:flexcoders%40yahoogroups.com> 
        > Subject: [flexcoders] addEventListener and additional
arguments?
        > 
        > 
        > 
        > Is there a way to use the addEventListener method and pass 
        additional 
        > arguments along with the event? I have a form where I must
create 
        the 
        > form objects dynamically so I need to use addEventListener for

        > formatting, etc. I can not use inline mxml to add the
listeners.
        >
        
        

        

        


 

Reply via email to