Проблема не в том, что i
уже существует, а в том, что существует только одна его копия - к моменту выполнения обратного вызова из первой итерации значение i
в вашем стековом кадре изменилось.Один из способов обойти это - сгенерировать вашу функцию в отдельном кадре стека:
private function makeCallback(i:int):Function {
return function(e:Event):void {imageLoaded(e,i);};
}
public function frob():void {
for(var i:int=0; i<someArray.length; i++)
{
var loader:Loader=new Loader();
loader.load(new URLRequest("http://testurl.com/test.jpg"));
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, makeCallback(i));
}
}