Доброго времени суток.
Столкнулся с такой проблемой, мне нужно реализовать определенное количество контейнеров (количество контейнеров получаю с сервера), и к каждому контейнеру нужно прицепить свой Timer. Чтобы реализовать это я создаю массив Timer-ов и каждый Timer в функции обработчике должен знать свой индекс.
Тут такая проблема как получить свой i в функции обработчике?
в данном коде всегда возвращается 10 и это понятно, а как сделать чтобы возвращался свой i, то есть 1, 2, 3 и т.д?
Код #1

Код AS3:
package {
import flash.display.*;
import flash.events.*;
import flash.utils.*;
public class myClass extends Sprite {
private var myTimer:Array = new Array();
public function myClass():void {
for (var i:int = 0; i < 10; i++) {
myTimer[i] = new Timer(1000);
myTimer[i].start();
myTimer[i].addEventListener(TimerEvent.TIMER, function (e:*) {
trace('Как тут получить доступ к своей переменной i?');
trace('i:'+i); // во всех 10 обработчиках, выдает 10
});
}
}
}
}
или такой более правильный код, как тут получить у каждого свой i?
Код #2

Код AS3:
package {
import flash.display.*;
import flash.events.*;
import flash.utils.*;
public class myClass extends Sprite {
private var myTimer:Array = new Array();
public function myClass():void {
for (var i:int = 0; i < 10; i++) {
myTimer[i] = new Timer(1000);
myTimer[i].start();
myTimer[i].addEventListener(TimerEvent.TIMER, doTime);
}
}
public function doTime(e:TimerEvent):void {
trace('Как тут получить доступ к своей переменной i?');
trace('i:'+i);
}
}
}
или вопрос можно поставить так: Как расширить экземпляр myTimer[i] и добавить в него например свойство id, чтобы выглядело так?
Код #3

Код AS3:
package {
import flash.display.*;
import flash.events.*;
import flash.utils.*;
public class myClass extends Sprite {
private var myTimer:Array = new Array();
public function myClass():void {
for (var i:int = 0; i < 10; i++) {
myTimer[i] = new Timer(1000);
// каким-то чудесным способом мы
// тут добовляем экземпляру
// новое свойство id
myTimer[i].id;
// а тут уже присваиваем этому
// свойству само значения переменной i
myTimer[i].id = i;
myTimer[i].start();
myTimer[i].addEventListener(TimerEvent.TIMER, doTime);
}
}
public function doTime(e:TimerEvent):void {
// а в самой функции обработчеке мы уже
// достаем это свойство id и
// присваиваем его к переменной i
var i:Number = e.currentTarget.id;
trace('i:'+i);
}
}
}
И еще раз повторю вопрос для тех кто ничего не понял:
Как расширить экземпляр myTimer[i] и добавить в него свойство id?