Просмотр полной версии : составные имена для кнопок в цикле
plea5ure
06.12.2009, 19:48
На сцене расположены 10 кнопок.
Их instance name соответственно:
image0_btn
image1_btn
...
image9_btn
В зависимости от переменной n нужно изменять свойство _visible первых n кнопок.
for (j=0; j<n+1; j++) {
"image"+j+"_btn"._visible = true;
}
возможен ли вообще такой вариант составных имен?
само собой данная строка в цикле не работает.
нашел временный выход с помощью switch case, но более 100 строк кода не вариант.
var n:Number = 5;
for ( i = 0; i < n; i++) {
_root['image' + i + '_btn']._visible = true;
}
Предупреждая обычные трудности при работе с кнопками или мувиками в цикле, покажу также пример, как на них повесить обработчик:
for ( i = 0; i <= 100; i++) {
_root['image' + i + '_btn'].num = i;
_root['image' + i + '_btn'].onRelease = btnOnRelease;
_root['image' + i + '_btn'].onRollOver = btnOnRollOver;
}
function btnOnRelease () {
trace('Я - событие onRelease на кнопке номер ' + this.num);
}
function btnOnRollOver () {
trace('Я - событие onRollOver на кнопке номер ' + this.num);
}
plea5ure
06.12.2009, 20:14
ведь всё просто.
благодарю!
Большое спасибо! И мне очень пригодилось.
spacecadet
29.12.2009, 15:53
Спасибо, mooncar, я тоже воспользовался!
vladislove
06.01.2010, 18:15
А как правильно написать в случае вложенности?
например если у меня this.mainClip_mc.Picture_mc.(если обращаться надо к обоим вложенным)
И можно ли THIS вместо _ROOT?
Не очень понятно, что вы хотите. Развернуто спросите.
(А this в моем примере в разных местах будет указывать на разные объекты - в цикле, и если код на _root, то на него и укажет. А в кнопочных функциях - укажет на нее.)
vladislove
06.01.2010, 23:49
я имел ввиду что в этой иерархии this.mainClip_mc.Picture_mc клипов много
соответственно существуют mainClip1_mc,mainClip2_mc,и тд и так же Picture1_mc,Picture2_mc и тд
как правильно обратиться к ним в цикле-у меня как раз стоит такая задача
подробнее здесь http://www.flasher.ru/forum/showthread.php?t=134434
Добавлено через 1 час 46 минут
например вот так могу написать
this.['tn' + i + '_mc'].hitareaL_mc._x;
Если сложная вложенная структура, то можно, например, так:
for (i = 1; i <= 20; i++) {
for (k = 1; k <= 10; k++) {
var mc:MovieClip = this['main' + i]['pic' + k];
mc._x = i * 20;
mc._y = k * 20;
mc.onRelease = picOnRelease;
mc.num_i = i;
mc.num_k = k;
}
}
function picOnRelease () {
trace (this + ', num_i = ' + this.num_i); //будет выводить номера мувиков согласно их при принадлежности к какому-то main
trace (this + ', num_k = ' + this.num_k); //будет выводить номера мувиков согласно их нумерации внутри отдельного main
}
и т. д.
vladislove
07.01.2010, 18:43
спасибо огромное за помощь - здесь не часто встретишь такое участие
Как я понял вы предлагаете Цикл в Цикле - Пока не пойму зачем.
В моем случае i = k,или это для реалезации структуры вложенности и даже при i=k надо так?
3 строка вашего кода означает var mc:MovieClip = main1.pik1 ?(при х и к = 1)
Где бы почитать про все эти трюки с квадратными скобками,многие вопросы отпали бы сами собой
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.