PDA

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


DJ_ManiaC
05.07.2007, 21:00
Проблемка проста до безобразия... Не могу найти как это правильно делается.
Люди подскажите какой должен быть синтаксис при задании переменной в клипе имя которого берётся из переменной.
Пробовал 2-ва варианта
var this[mcName]:tournamentName = tournamentName
и
this[mcName].tournamentName = tournamentName;

где mcName переменная в которой содержится имя нужного клипа
Первый вариант выдаёт ошибку при компиляции, а при втором переменная получается undefined.

BigDan
05.07.2007, 21:13
var value:Number = 100;
this["mc"].value = value;
trace(this["mc"].value);

DJ_ManiaC
05.07.2007, 22:00
Попробовал, но всё равно переменная получается undefined
У меня в цикле вот такой код:
NextStringY = 0
NextLayer = 0
while(tournament!=null) {
tournamentName = tournament.nodeName; // название турнира
mcName = "Tournament_" + NextLayer;
attachMovie("StringTournament", mcName, NextLayer, {_x: 0, _y:NextStringY});
var value:Number = 100;
this[mcName].value = value;
trace(this[mcName].value);
tournament = tournament.nextSibling;// переход к следующему турниру
NextStringY += 20
NextLayer += 1
}
И при этом переменная value трасится как undefined

BigDan
05.07.2007, 22:05
все зависит от того, куда ссылается this
_root.createEmptyMovieClip("mc",1);
tracer();//undefined
function tracer(){
tracer_();
function tracer_(){
trace(this["mc"]);
}
}

DJ_ManiaC
05.07.2007, 22:09
this куда он ещё может ссылаться? У меня один мувик атачится в другой в котором этот код и в том который атачится должна объявляться переменная.
Попробовал запустить у себя твой код (хотя я не очень понимаю его суть) - тоже выдаёт undefined

BigDan
05.07.2007, 22:18
этот код находится в функции?

DJ_ManiaC
05.07.2007, 22:21
Да... Цикл запускается когда XML загружен (если загрузка успешна запускается функция в которой цикл)...

BigDan
05.07.2007, 22:37
NextStringY = 0
NextLayer = 0
while(tournament!=null) {
tournamentName = tournament.nodeName; // название турнира
mcName = "Tournament_" + NextLayer;
var clip:MovieClip = attachMovie("StringTournament", mcName, NextLayer, {_x: 0, _y:NextStringY});
var value:Number = 100;
clip.value = value;
trace(clip.value);
tournament = tournament.nextSibling;// переход к следующему турниру
NextStringY += 20
NextLayer += 1
}
Пробуй так

Kikasso
05.07.2007, 22:38
....
trace(this);
mc = attachMovie("StringTournament", mcName, NextLayer, {_x: 0, _y:NextStringY});
trace(mc);
mc.value:Number = 100;
....
this - видимо в данном случае ваш xml

DJ_ManiaC
05.07.2007, 22:43
Понял... Спасибо... Теперь всё ок... Хотел сначало спросить почему при первом выполнении цикла выдаётся undefined :) А потом посмотрел и убрал проверочную функцию что BigDan написал :) Ещё раз Огромное спасибо BigDan и Kikasso... Успехов вам...