Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 1.0/2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=93)
-   -   Цикличное управление множеством элементов. (http://www.flasher.ru/forum/showthread.php?t=130009)

LanSelven 15.09.2009 20:03

Цикличное управление множеством элементов.
 
Связал название всех элементов цифрами, чтобы можно было без проблем задать для них свойство в несколько строк цикла.
Но вот проблема: для каждого элемента(К примеру кнопка) есть ряд своих переменных с таким же номером, что и элемент(кнопка), так вот задать условие кнопке не проблема, но к переменным не получится так как они находятся внутри функции цикла и формально получается что функция начинает работать когда цикл уже завершает свою работу и функцию связанную с элементом мы открываем а переменные зависящие от i( ну, переменная цикла О_о) уже не отвечают...
Вот пример
Код AS1/AS2:

for (i=1;i<234;i++){
                _root['Mc_choose_'+i].btn.onRelease = function() {
                        _root['Mc_choose_'+i].CheckBox = 2;//вот тут уже i = 234 =(
 
                }
        }

Как сделать чтобы производить дальнейший счет с номером i?

udaaff 15.09.2009 20:30

Код AS1/AS2:

this.CheckBox = 2

С большой буквы пишутся названия классов.

LanSelven 15.09.2009 20:35

Пробовал this - не выходит....=(
CheckBox получается и не в _root и не в Mc_choose_1...
А надо чтобы была переменная Mc_choose_1.CheckBox
Цитата:

С большой буквы пишутся называния классов.
O_o ну, это я не знаю, пишу как удобнее, никто меня не учил хорошим манерам =]

Добавлено через 3 минуты
точнее, Mc_choose_1.CheckBox как пример. Может быть и Mc_choose_200.CheckBox и Mc_choose_64.CheckBox. вообщем чтобы зависела от i. Ну конечно если есть способ как сделать зависимость не от i а от непосредственно мувика(Mc_choose) в котором находиться кнопка(ну, что и пытались сделать через this) то это конечно не хуже =)

udaaff 15.09.2009 20:40

this указывать на текущий объект, т.е. объект через который вызывается данный обработчик.
this в твоем случае будет _root['Mc_choose_'+i]
И я не досмотрел немного...
Код AS1/AS2:

this._parent.CheckBox = 2

upd: this в твоем случае будет _root['Mc_choose_'+i].btn
Вот.

LanSelven 15.09.2009 21:09

Cпасибо больше за ответ.
А как проделать нечто подобное:
Код AS1/AS2:

for (i=1;i<234;i++){
        _root['Mc_choose_'+i].btn.onRelease = function() {
                _root['CheckBox'+i] = 2;
        }
}


mooncar 15.09.2009 23:46

В цикле - вместо назначения анонимной функции на событие onRelese нужно сделать ссылку на внешнюю функцию.

Код AS1/AS2:

for (i=1;i<234;i++){
      _root['Mc_choose_' + i].btn.num = i;
      _root['Mc_choose_' + i].btn.onRelease = btnOnRelease;
}
 
function btnOnRelease() {
  _root['CheckBox' + this.num] = 2;
}


udaaff 16.09.2009 00:01

И в чем разница?
Между "внешней" функцией и "невнешней"?

mooncar 16.09.2009 00:11

Вложений: 1
"Внешняя" по отношению к телу цикла.
См. пример.
Если же писать сразу в цикле, то ничего не выйдет.

LanSelven 16.09.2009 17:50

Понятно))) Теперь можно горы свернуть =D
Спасибо огромное!!


Часовой пояс GMT +4, время: 03:59.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.