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 >

