Hi Keith,

Main issue is that there is nothing to distinguish the TextInput instances.
Plus the I iterative isn¹t working because it indeed will be that last
number of the loop ­ it¹s not being used for anything else or assigned to
anything.

To get around this, you could assign a different name to each of the input
boxes in the loop. So using your I iterative you could have: input.name =
³inputbox² + String(i);

Then in your event listener have:

Trace(³input box changed = ³ + Event.currentTarget.name);

That should work ;)

Hope that helps.
Dave.


From: Keith Hughitt <[email protected]>
Reply-To: <[email protected]>
Date: Fri, 05 Jun 2009 14:28:43 -0000
To: <[email protected]>
Subject: [flexcoders] Closures in ActionScript 3?

 
  

  

Could someone please explain to me how closures work in ActionScript? I am
attempting to create a set of Flex Form fields, and assign an event-handler
to each of them, however, it seems that after creation, all of the fields
have the same event handler.

For example:

>> var i:int = 0;
          for each (var item:Object in this._myItems) {
                var f:FormItem = new FormItem();
                f.label = item.header;
                
                var input:TextInput = new TextInput();
                
                // Setup event-handler
                var self:MyClass = this;

                input.addEventListener("change", function (e:Event):void {
                    Alert.show("Event-hanlder #: " + String(i));
                 });

                i++;
            
                // Add text input to FormItem
                f.addChild(input);
                
                // Save a reference to the form control
                item.ui = f;
                addChild(f);
            }

So I would expect that the number displayed when I change any given field
matched the order of the field on the screen. When I run the code, however,
no matter which field I adjust, the number is always the same (it is the
number of the last form item to be added).

It appears that what is happening is that a single function is being
created, and each input field has a reference to that same function.

Any suggestions? Any help would be greatly appreciated.

Thanks!
Keith
  
    

> 

Reply via email to