Форум 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=84114)

Ulya 23.08.2006 18:32

Обработчики массива динамических кнопок
 
Народ, помогите, пожалуйста.
Есть массив кнопок, нужно примотать ко всем обработчик, зависящий от номера кнопки. Грубо говоря по кнопке с индексом 0, чтоб появлялся текст "Текст 0".

Код:

function f(i) {
        trace("Функция №"+i);
}

и цикл
Код:

i = 0;
do {
        _root["bt_" + i].onRelease = function () {
                f (i);
        };
        i++;
} while (i < 10);

Цикл крутицца, но на все кнопки лепит обработчик для последнего значения индекса. Т.е. для всех кнопок выводит Функция №10.
Что не так??? Подскажите плиз. Заранее спасибо.

iNils 23.08.2006 18:37

прочитайте пункт 3 (остальные тоже почитайте для общего развития) правил подраздела http://www.flasher.ru/forum/showthread.php?t=79864 и приведите ваш текст в надлежащий вид.

Ulya 23.08.2006 18:39

хорошо, буду знать, спасибо.

iNils 23.08.2006 18:44

Код:

function f () {
        trace ("Функция №" + this.i);
}
i = 0;
for (var i = 0; i < 10; i++) {
        _root["bt_" + i].onRelease = f;
        _root["bt_" + i].i = i;
}


Ulya 23.08.2006 18:49

Nils, спасибо большое-большое, работает! я поняла в чем дело.

etc 23.08.2006 20:32

i = 0; лишнее

Ulya 24.08.2006 11:14

это от моего цикла осталось

iNils 24.08.2006 11:46

Цитата:

Сообщение от Ulya
это от моего цикла осталось

угу...

Ulya 24.08.2006 14:31

Я опять к вам. Мне нужно ещё, чтобы кнопка удалялась со сцены после её нажатия.
Допустим, переписываем функцию
Код:

function f () {
        trace ("Функция №" + this.i);
            this.clear();}

Но кнопка не удаляется.
Пробовала updateAfterEvent() -не помогает.
removeMovieClip тоже не удаляет. Что нужно делать в этом случае?
Простите з ламерство, мы когда-нить научимся =)

etc 24.08.2006 14:41

Код:

function f () {
        trace ("Функция №" + this.i);
        this.swapDepths(100);
        this.removeMovieClip();


Ulya 24.08.2006 14:49

Цитата:

Сообщение от __etc
Код:

function f () {
        trace ("Функция №" + this.i);
        this.swapDepths(100);
        this.removeMovieClip();


Нет, кнопка всё равно остаёцца. А в чем вообще фишка?
Создавалась кнопка вот так:
Код:

_root.attachMovie("bt", "bt_"+i, _root.getNextHighestDepth());

etc 24.08.2006 14:53

Покажи исходник.

Ulya 24.08.2006 14:56

Цитата:

Сообщение от __etc
Покажи исходник.

Исходник большой и там вообще не о том речь.
Впринципи, наверное, могу прислать по мылу, выкладывать не хочецца всё.
На мыло? или есть ещё какие способы убить что-то на сцене?

DarkLight 24.08.2006 15:50

Можно еще MovieClip.unloadMovie() пользоваться.

etc 24.08.2006 16:22

unloadMovie убирает только с глаз долой.

Ulya 24.08.2006 16:22

Не помогает, и unloadMovieNum(this.getDepth()); тоже =(

Ulya 28.08.2006 16:23

Вложений: 2
Делаю флэшку для модерирования сообщений, пока всё очень сырое, но я уже запуталась окончательно, выкладываю исходник, помогите пожалуйста.

из Xml-файла грузяцца данные- сообщения.
Создаецца массив всех сообщений smsUncheckedArray.
Далее из него формируется подмассив smsShow сообщений, которые влезут в экран, так как не можем отобразить сразу все сообщения.
Из массива сообщений из каждого элемента формируется мувиклип _root["base_mc"+i] c тремя кнопками ДА, НЕТ, РЕДАКТИРОВАТЬ: btY, btN, btM.
По кнопке btY сообщение должно перемещацца в левую часть, после того как переместились все сообщения, грузим след. порцию. Пока это происходит по кнопке ЕЩЁ.
После того, как загружается вторая партия, перестают работать кнопки, я подозреваю, что неправильно задаю глубину, но не могу понять как нужно.
В идеале после перемещения сообщения, остальные должны подъезжать и подгружацца, у меня эта чать закоментирована (движение), потому что тоже работает непонятно, подозреваю, что нужно переименовывать мувик поле того, как его перемещаю, но оно не срабатывает.
Подскажите плиз, что не так.

Ulya 29.08.2006 14:30

неужели никто не посмотрит?
Кстати, я разобралась, как лучше удалть мувик
Код:

function destroyObject(id:String):Void
  {
      var o:MovieClip = this[id];
      if (o.getDepth() < 0)
      {
        var dt:Array = buildDepthTable();
        var i:Number = findNextAvailableDepth(0, dt, "up");
        var temp = i; 
        o.swapDepths(temp);
      }
      o.removeMovieClip();
      delete this[id];
  }

так работает без всяких глюков


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

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