Просмотр полной версии : Обработчики массива динамических кнопок
Народ, помогите, пожалуйста.
Есть массив кнопок, нужно примотать ко всем обработчик, зависящий от номера кнопки. Грубо говоря по кнопке с индексом 0, чтоб появлялся текст "Текст 0".
function f(i) {
trace("Функция №"+i);
}
и цикл
i = 0;
do {
_root["bt_" + i].onRelease = function () {
f (i);
};
i++;
} while (i < 10);
Цикл крутицца, но на все кнопки лепит обработчик для последнего значения индекса. Т.е. для всех кнопок выводит Функция №10.
Что не так??? Подскажите плиз. Заранее спасибо.
прочитайте пункт 3 (остальные тоже почитайте для общего развития) правил подраздела http://www.flasher.ru/forum/showthread.php?t=79864 и приведите ваш текст в надлежащий вид.
хорошо, буду знать, спасибо.
function f () {
trace ("Функция №" + this.i);
}
i = 0;
for (var i = 0; i < 10; i++) {
_root["bt_" + i].onRelease = f;
_root["bt_" + i].i = i;
}
Nils, спасибо большое-большое, работает! я поняла в чем дело.
это от моего цикла осталось
это от моего цикла осталось
угу...
Я опять к вам. Мне нужно ещё, чтобы кнопка удалялась со сцены после её нажатия.
Допустим, переписываем функцию
function f () {
trace ("Функция №" + this.i);
this.clear();}
Но кнопка не удаляется.
Пробовала updateAfterEvent() -не помогает.
removeMovieClip тоже не удаляет. Что нужно делать в этом случае?
Простите з ламерство, мы когда-нить научимся =)
function f () {
trace ("Функция №" + this.i);
this.swapDepths(100);
this.removeMovieClip();
function f () {
trace ("Функция №" + this.i);
this.swapDepths(100);
this.removeMovieClip();
Нет, кнопка всё равно остаёцца. А в чем вообще фишка?
Создавалась кнопка вот так:
_root.attachMovie("bt", "bt_"+i, _root.getNextHighestDepth());
Покажи исходник.
Исходник большой и там вообще не о том речь.
Впринципи, наверное, могу прислать по мылу, выкладывать не хочецца всё.
На мыло? или есть ещё какие способы убить что-то на сцене?
DarkLight
24.08.2006, 15:50
Можно еще MovieClip.unloadMovie() пользоваться.
unloadMovie убирает только с глаз долой.
Не помогает, и unloadMovieNum(this.getDepth()); тоже =(
Делаю флэшку для модерирования сообщений, пока всё очень сырое, но я уже запуталась окончательно, выкладываю исходник, помогите пожалуйста.
из Xml-файла грузяцца данные- сообщения.
Создаецца массив всех сообщений smsUncheckedArray.
Далее из него формируется подмассив smsShow сообщений, которые влезут в экран, так как не можем отобразить сразу все сообщения.
Из массива сообщений из каждого элемента формируется мувиклип _root["base_mc"+i] c тремя кнопками ДА, НЕТ, РЕДАКТИРОВАТЬ: btY, btN, btM.
По кнопке btY сообщение должно перемещацца в левую часть, после того как переместились все сообщения, грузим след. порцию. Пока это происходит по кнопке ЕЩЁ.
После того, как загружается вторая партия, перестают работать кнопки, я подозреваю, что неправильно задаю глубину, но не могу понять как нужно.
В идеале после перемещения сообщения, остальные должны подъезжать и подгружацца, у меня эта чать закоментирована (движение), потому что тоже работает непонятно, подозреваю, что нужно переименовывать мувик поле того, как его перемещаю, но оно не срабатывает.
Подскажите плиз, что не так.
неужели никто не посмотрит?
Кстати, я разобралась, как лучше удалть мувик
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];
}
так работает без всяких глюков
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.