PDA

Просмотр полной версии : Не происходит обращения к имени клипа из массива


JokerDen
14.02.2011, 22:57
Собственно, сабж.
var arr:Array = [];
//блаблабла, записываю в массив
arr[a].les_mc._y += 0.5;
трэйсил arr[a] - выдает нужное слово, но в контексте не происходит обращения к мувиклипу. При прямом обращении к клипу, а не из массива, всё также работает.

mooncar
14.02.2011, 23:10
Маловато контекста.
Что такое arr[a], например ?

JokerDen
14.02.2011, 23:13
Массив, в элемент которого я записывал имя клипа, который я в дальнейшем хочу вызвать.

petyar
14.02.2011, 23:16
arr[a].les_mc._y += 0.5
Ваш клип, являющийся элементом массива, - контейнер для "les_mc"?

JokerDen
14.02.2011, 23:18
Эээ, я не знаю, что такое контейнер, но "les_mc" - это клип внутри клипа под названием, хранящимся в элементе 'a' массива 'arr'.

petyar
14.02.2011, 23:20
Эм, что я вашем понимании "под названием, хранящимся..."? Элемент массива - сам клип или строка с названием клипа?

mooncar
14.02.2011, 23:22
Тогда trace(arr[a]) должен выдать не "слово", а ссылку на этот мувик.
Сделайте
trace(arr[a]);
trace(arr[a].les_mc);
и посмотрите, что у вас выводится, ну и если непонятно будет, сообщите здесь.

JokerDen
14.02.2011, 23:24
Строка с названием клипа. Как мне ее использовать для обращения?

mooncar
14.02.2011, 23:24
Если у вас trace(arr[a]) выводит "название", то есть инстанс-нейм, то нужно его превратить в ссылку на мувик, например, если дело на _root происходит, то
_root[arr[a]].les_mc

JokerDen
14.02.2011, 23:34
У меня всё это происходит внутри другого клипа, кажется такой способ ведь не работает?
_this[arr[a]].les_mc

Да, прошу прощения за свое нубство.

zoo
14.02.2011, 23:34
Как то всё не так.
Чтобы сделать массив мувиклипов, сначала объявляем массив:
var my_mc:Array = new Array();
Затем создаём в элементе массива мувиклип:
my_mc[i] = new Movie Clip();
my_mc[i]._y += 0,5;

JokerDen
14.02.2011, 23:48
А как мне запихать клип в массив, если использую duplicateMovieClip? А то, в принципе, выглядит удобнее обращаться к элементу массива, а не коряво, беря из массива имя.

petyar
15.02.2011, 00:19
Как-то так:
mc.duplicateMovieClip("mc"+i, _root.getNextHighestDepth());
arr[i] = _root["mc"+i];

zoo
15.02.2011, 00:20
duplicateMovieClip - метод класса Movie Clip. Если у вас элемент в массиве класса Movie Clip, соответственно:
my_mc[i].duplicateMovieClip()

JokerDen
15.02.2011, 00:23
Блин, я просто коряво всё объясняю, извините уж.
Но суть такова. Если клип находится в корне, то обращение к нему из строки происходит
_root["mc"+i];
А как мне к нему обратиться, если он у меня не в _root, а внутри другого клипа? Но при том, использовать такой же строковый адрес.

И да, в моем случае код расположен как раз таки внутри этого клипа, то есть мне фактически нужен _this[строковое имя], но записанное в правильной форме, чтобы было понятно, что это я обращаюсь к клипу.

Добавлено через 10 минут
Ой, всё, разобрался, просто надо было this без подчеркивания.

Всем огромное спасибо, обожаю этот форум :3