PDA

Просмотр полной версии : Как создать массив мовиклипов


_alex_niv_
02.05.2006, 12:24
Добрый день!

Еще один вопрос - у меня в сцене используется 10 текстовых полей, которое я беру из библиотеки (оформленное как мовиклип).
Можно ли создать массив, состоящий из этих полей, что бы обращаться к ним как к элементам массива?

Король
02.05.2006, 12:32
а вы пробовали?

breez38
02.05.2006, 12:33
да легко:

var arr:Array = new Array();
arr.push(mc1.txtField);
arr.push(mc2.txtField);
......
arr.push(mcN.txtField);

.....
//индексация начинается с 0
arr[3].text = "Привет"; //выведит в 4-ом текстфиелде текст

undeddy
02.05.2006, 12:52
Только с циклом код несколько меньше.

breez38
02.05.2006, 13:09
to undeddy
это само собой, но если человек с массивами толком не знаком, то забивать ему голову циклами не нужно.. это потом с опытом прийдет.

Homo Sapiens
02.05.2006, 15:16
это само собой, но если человек с массивами толком не знаком, то забивать ему голову циклами не нужно.. это потом с опытом прийдет.
Нужно, а то не поймёт, в чём преимущество массивов.
var arr:Array = new Array(10);
for(var i = 0; i < arr.length; i++)
{
arr[i] = this["mc" + i].txtField;
}

//индексация начинается с 0
arr[3].text = "Привет"; //выведит в 4-ом текстфиелде текст

Nirth
02.05.2006, 15:37
arr[i] = this["mc" + i].txtField;

я бы не назвал такую методику правильной, исполльзовать ее нужно, только при условии, что невозможно использовать push или unshift

iNils
02.05.2006, 15:44
я бы не назвал такую методику правильной, исполльзовать ее нужно, только при условии, что невозможно использовать push или unshift
Это кому как больше нравится.

Nirth
02.05.2006, 17:33
тогда можно юзать не Array а Object =)

var holder:Object = {length:10};
for (var i:Number=0;i<holder.length;i++) {
holder[i] = _root["mc"+i.toString()];
trace(holder[i]);
}

Homo Sapiens
02.05.2006, 17:54
я бы не назвал такую методику правильной, исполльзовать ее нужно, только при условии, что невозможно использовать push или unshift
Всему своё место. Кстати, у меня бага есть, первый элемент не добавится, как и последний.
arr[i] = this["mc" + (i + 1)].txtField;
А так написал для своеобразной симметрии, чтобы показать соотношение между номерами элементов массива (0 - 9) и именами клипов (mc1 - mc10)