Содержимое функции принадлежит функции, не используйте переменные извне.Как и cara1
и cara2
, это i
не относится к функции, в которой вы его используете.
Но исправить код просто:
for (var i:Number = 0; i < numFaces; i++) {
var fLoader:Loader = new Loader();
fLoader.contentLoaderInfo.addEventListener(Event.INIT, LoadCara(i, fLoader));
trace("LoadCara:" + i.toString());
}
function LoadCara(index:int, loader:Loader):Function {
return function(fle:Event):void {
if (index == 0) {
trace("cara1:" + index.toString());
cara1.removeChildAt(0);
cara1.addChild(loader);
} else if (index == 1) {
cara2.removeChildAt(0);
cara2.addChild(loader);
}
}
}
Если вы хотите использовать removeEventListener()
позже, настройте цикл на:
var functionsLoadCara:Object = new Object();
for (var i:Number = 0; i < numFaces; i++) {
var fLoader:Loader = new Loader();
functionsLoadCara[i] = LoadCara(i, fLoader);
fLoader.contentLoaderInfo.addEventListener(Event.INIT, functionsLoadCara[i]);
trace("LoadCara:" + i.toString());
}
Затем, когда вам больше не нужен прослушиватель событий, выполните:
for (var i:Number = 0; i < numFaces; i++) {
fLoader.contentLoaderInfo.removeEventListener(Event.INIT, functionsLoadCara[i]);
}
Этот способ передачи ваших параметров безопаснее.Это лучше проиллюстрировано в этом ответе .