Я хотел бы предвосхитить мой ответ предложением использовать «Класс документа» с AS3, чтобы сделать такие вещи, как пространства имен и наследование, намного понятнее.Вы точно знаете, где что-то доступно, когда используете документное, объектно-ориентированное программирование, а не программирование по временной шкале, доступное через Flash IDE (это доступно только благодаря AS1 / 2).Тут: http://www.kirupa.com/forum/showthread.php?223798-ActionScript-3-Tip-of-the-Day/page14
Ответ на вопрос: вы пытаетесь переместить два уровня наследования в один набор []
Другой способ написания вашей первой строки "Не работает":
this.myMovieClip["var_num"+j"];
Вы также можете использовать: this["MovieClip"]["var_num"+j];
По сути, вам нужно извлечь «MovieClip (root)» из строки, которую вы используете для вызова вашей переменнойпотому что вы проходите через два уровня наследования: this-> MovieClip-> targetVar
Вам нужно использовать два периода, точку и квадратную скобку или два квадратных скобки, чтобы переместить два уровня наследования.Точка .
и набор квадратных скобок []
оба решают задачу перемещения на один уровень глубже, поэтому размещение .
внутри строки, используемой для вызова вашей переменной, не будет работать.
Объяснение:
Следующие три примера возвращают одну и ту же переменную:
myMovieClip.my_variable
myMovieClip["my_variable"]
var str:String = "my_variable";
myMovieClip[str];