Просмотр полной версии : Как грамотно создать событие release n - ому количеству кнопок, созданных программно?
у меня есть такая функция InitButton
параметры меняющиеся:
имя, текст на кнопке, функция на onRelease, выравнивание, далее много др параметров
внутри там много всего чего то понаписано :)
но все работает и я на нее не жаловался еще :)
1. Написать класс кнопки + использовать в нем EventDispatcher для генерации событий. Экземплярам класса добавлять необходимые обработчики addEventListener'ом.
2. Или так:
//или любой подобный класс, а таких много.
import com.bigspaceship.utils.Delegate;
//массив кнопок.
var buttons:Array = new Array();
...
//создаем кнопки.
...
//обработчик.
function onButtonRelease(id:Number):Void {
trace(id);
}
//назначаем onRelease.
for(var i:Number=0; i<buttons.length; i++){
var button:MovieClip = buttons[i];
button.onRelease = Delegate.create(this, this.onButtonRelease, i);
}
Improved Delegate (com.bigspaceship.utils.Delegate) (http://labs.bigspaceship.com/blog/?p=9)
Lowka, честно говоря не совсем понял:-D, поясни. У меня программно создается <k> кнопок с именами btn_1, btn_2 ... btn_<k>.
в луппе прописываешь
name = "btn_"+k;
this[name].onRelease = function () {
// bla bla
}
// и т. д.
в луппе прописываешь
name = "btn_"+k;
this[name].onRelease = function () {
// bla bla
}
// и т. д.
А по подробнее про лупп, если можно?
Я так и не понял =) как быть, если надо каждой кнопке в цикле присвоить выполнение кода, отличающегося на тот же параметр k, который и определяет имя кнопоки?
Если не трудно, кто-нибуть плз напишите пример по подробнее.
http://flasher.ru/forum/showthread.php?t=91829
топик не про то
но смысл того что надо, и почему не работает я раскрыл...
поменять там код 10 секунд в цикле (лупе)
Tipon
воощем так =)) есть кнопка с именем допустим item пихуем ее в контент (тоесть в мувик)
далее можно навесить на мувик контент можно просто в тайм лайне допусти на мувик вешаем код:
onClipEvent (load) {
space = this.item._height + 2 // растояние на которые сдвигаем дубликат
i = 0
while (++i<20) // делаем 20 кнопок
{
name = "item"+i; // имя дубликата кнопки
this.item.duplicateMovieClip(name, i);
this[name]._y = space*i;
this[name].onRelease = function () { // к каждой кнопке присоединяется функция onRelease
}
}
}
и если в том релизе будет i то ничего хорошего не выйдет :)
хех.. оказалось всё решается проще, чем я мог только себе представить.
Спасиб CorC !)
Спасибоя я разобрался!! сделал так
for (i=1; i<k; i++) {
eval("btn_"+i).onRelease = function () {
//c помощью this._name получю какая кнопка нажата и дальше без проблем
}
}
Значит лучший вариант это this[]?
В сочетании со ссылками — да.
Вот галерея которая получилась.
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.