
Код AS3:
for (var j=0; j<xml.mob.length(); j++) {
// var j=0 - не объявлен тип переменной.
// var j=0 - инфиксные операторы принято отделять пробелами за исключением обозначений типов.
// j никогда не будет больше int.MAX_VALUE, но так, как вы его объявили, он будет типа Number
// при этом будет выполнять более простые операции для целых чисел более сложным способом
// как для чисел с плавающей запятой.
// j<xml.mob.length() - см. инфиксные операторы.
// j<xml.mob.length() - это условие будет рассчитано каждый виток цикла. Оно само по себе
// представляет вложенный цикл т.е. цикл по всем детям xml с выборкой, потом цикл по
// всем детям mob с выборкой.
mob[j]=new Object; /* вот эти */
// см. инфиксные операторы.
// mob судя по всему типа XMLList, поэтому код приведенный выше равносилен:
// mob[j] = XML("");
// что само по себе бессмысленно.
// new Object; - использует неидиоматическую запись вызова конструктора
// нужно, как минимум, new Object();
// более того, существует короткая запись: {}, которая, кроме всего прочего
// занимает меньше памяти (по случайному стечению обстоятельств).
// Но хуже всего то, что использование динамического объекта в этом месте ничем не
// обосновано. Нужно было создавать объект со статическим типом. Динамические
// объекты нужно создавать только тогда, когда не-динамические создавать не возможно.
mob[j].timer=new Timer(50, 50); /* вот эти */
// вы повторяете одну и ту же операцию доступа к элементу по индексу. Нормальным
// подходом было бы закешировать созданный вами ранее объект в переменную.
// создавать новый Timer каждый раз - непозоволительное расточительство. Время всегда одно,
// и от количества хронометров не изменится.
mob[j].timer.start(); /* вот эти */
// см. кеширование.
// кроме всего, начав выражение с динамического доступа, и не приведя тип к какому-нибудь
// статическому типу вы продолжаете пользоваться механизмом поиска свойств по имени
// вместо того, чтобы позволить компилятору найти нужное свойство еще на этапе компиляции.
mob[j].timer.addEventListener(TimerEvent.TIMER, function (e:TimerEvent) {
// см. про отсутсвие типизации.
// e:TimerEvent - очень короткое имя переменной. слово event не достаточно длинное,
// для того, чтобы его сокращать. Однобуквенные переменные не пройдут никакой код-ревью.
// кроме того, что вы в цикле понасоздавали таймеров, вы теперь еще понасоздавали
// функций, в то время, как достаточно было бы только одной.
// у функции не указан возвращаемый тип. - это предупреждение компилятора
// т.е. скомпилируется, но в большинстве компаний которые производят продукцию
// сколь-нибудь серьезного уровня с использованием AS3 такой код не разрешат
// положить в репозитори.
/* И вот здесь надо обратиться к этому mob[j] */
// если бы вы исправили все остальное, ну или хотя бы принципиальную
// часть, то этот вопрос у вас бы не возник, т.как проблема
// решилась бы сама по себе.
});
}