PDA

Просмотр полной версии : Динамическое имя мувика


went
08.11.2006, 09:18
Подобная тема была, но так как она уже в архиве спрошу здесь.
Итак динамическое имя мувика. ТАм предлагалось 2 варианта

i=1;
this["m"+i]._visible=false;

который у меня не работает в принципе, здесь вопрос почему это может быть
и второй

i=1;
eval("_root.bla-bla.bla-bla.m"+i)._visible=false;


с ним ещё забавней, в одном месте он работает, а в другом нет
например в следующем коде:

var i=1
_root.kb.onPress = function ()
{
attachMovie("Kub", "kub"+i, i, {_x:0, _y:0});
_root.n1 = "i: "+i;
eval("_root.kub"+i).startDrag (true);


_root.kb.onRelease=_root.kb.onReleaseOutside=function() {
y=eval("_root.kub"+1);
_root.n2 = "i: "+ i;
eval("_root.kub"+i).stopDrag ();
eval("_root.kub"+i)._height=eval("_root.kub"+1)._height*0.5;
eval("_root.kub"+i)._width=eval("_root.kub"+1)._width*0.5;
}
i++
}


в первой части где startDrag всё работает нормально
во второй где stopDrag и всё остальное не срабатывает
если поставить вместо i например 1 - сработает для 1-й, а с i не срабатывает, хотя i значение имеет

в первой части если вывести eval("_root.kub"+i) выводит к примеру _level0.kub3
во второй undefined что за чудеса?

Dimchansky
08.11.2006, 11:54
1. По понятным причинам this["kub"+i] работать не будет. Будет работать _root["kub"+i];
2. У Вас реакция на событие onRelease определяется в рамках реакции на событие onPress (внимательно посмотрите на фигурные скобки). Может, Вам это и нужно, но разумно не поступать таким образом.

var i=1
_root.kb.onPress = function ()
{
attachMovie("Kub", "kub"+i, i, {_x:0, _y:0});
_root.n1 = "i: "+i;
_root["kub"+i].startDrag (true);

}
_root.kb.onRelease=_root.kb.onReleaseOutside=function() {
_root.n2 = "i: "+ i;
_root["kub"+i].stopDrag ();
_root["kub"+i]._height=_root["kub"+1]._height*0.5;
_root["kub"+i]._width=_root["kub"+1]._width*0.5;
i++
}
3. Отказывайтесь от конструкций с eval, это каменный век.

went
08.11.2006, 12:41
Спасибо. С eval-ом связался ибо он работал, теперь буду делать по правильному.

etc
08.11.2006, 14:02
Ну зачем вы себе усложняете жизнь выражениями _root['kub'+i], когда attachMovie возвращает ссылку на созданный мувик?

went
13.11.2006, 10:07
Ну зачем вы себе усложняете жизнь выражениями _root['kub'+i], когда attachMovie возвращает ссылку на созданный мувик?
э-э... примерчик можно?

pkfun
13.11.2006, 10:27
went

var main:MovieClip = this;
var mc:MovieClip;
var i:Number = 1;
//
main.kb.onPress = function() {
mc = main.attachMovie("Kub", "kub"+i, i, {_x:0, _y:0});
main.n1 = "i: "+i;
mc.startDrag(true);
};
main.kb.onRelease = main.kb.onReleaseOutside=function () {
main.n2 = "i: "+i;
mc.stopDrag();
mc._height = mc._height*0.5;
mc._width = mc._width*0.5;
i++;
};

Это распространенный прием. :)

etc
13.11.2006, 13:38
went, примерчики в мануале по attachMovie.

went
15.11.2006, 09:00
Это распространенный прием. :)
Спасибо. Теперь распростаню его и на себя :)

pkfun
15.11.2006, 10:59
Я только написал пример. Основная мысль от __etc :away:

went
15.11.2006, 13:39
Я только написал пример. Основная мысль от __etc :away:
__etc тоже СПАСИБО :victory:

went
17.11.2006, 17:42
Люди, подсобите - опять вопрос по динамике
перевёл основной фильм в мувик через возвращение mc = main.attachMovie
сделал практически всё но в отдельных местах необходимо обращение _root["ResNum"+n] - когда он был в основном фильме он ессно срабатывал, а теперь когда я перевёлв мувик ессно нет, что должно быть вместо _root, имя мувика kur
такая штука _kur["ResNum"+n] не прокатила

went
17.11.2006, 19:23
с помощью наводок въехал сам, если кому интересно
http://www.flasher.ru/forum/showthread.php?p=588782#post588782