Просмотр полной версии : Динамическая генерация кнопок
Привет всем,
Просьба не бить ногами-только разбираюсь в AS.. Вообщем вот задачка: сделал я кнопку на сцене, через AS привязал к ней функцию обработчик, которая при вызове (то бишь нажатии) запускает проигрывание определенного flash ролика на другой сцене. Всё работает.
Теперь задача сделать так, чтобы на сцене было много таких кнопок, а имя ролика привязанного к конкретной кнопке лежит в файле на сервере, и в общем случае этот файл может меняться (его содержимое). Вот вопрос в том, как можно в автомате - то бишь не руками налету лезть в файл на сервере считывать из него список swf файлов, и на сцене налету генерировать для каждого swf кнопку, которая будет его запускать на отдельной сцене?? Хоть куда копать подскажите, а то я не знаю с какой стороны подойти:)
gloomyBrain
10.02.2009, 23:02
в сторону классов XML и LoadVars
С их помощью Вы сможете обратиться к серверу и получить нужные данные в удобном для Вас формате (LoadVars - строка вида имя=значение&имя2=значение2, а XML - он и есть XML =) - полноценный документ со своей структурой, которую просто обрабатывать)
Ок.Спасибо,с этим понятно где копаться. А насчёт динамической привязки функции к созданному программно экземпляру символа? Я так понял, что никаких аналогов Сишных указателей или делегатов нету, значит что-то другое должно быть для этих целей..:umnik2:
gloomyBrain
11.02.2009, 01:05
Интересно, как Вы так поняли? =)
Все есть
Самое простое: пишите функцию
function shaut(){
trace("I was pressed!!!")
}
а затем назначаете её обработчиком события
my_butt.onRelease = shaut
Ну это не есть конечно истина в последней инстанции, но принцип, я думаю, понятен
Кнопки можно создавать, например в цикле, и прямо в цикле задавать им обработчики.
Ну это не есть конечно истина в последней инстанции, но принцип, я думаю, понятен
Кнопки можно создавать, например в цикле, и прямо в цикле задавать им обработчики.
Это понятно, вопрос в том как налету создавать функции-обработчики? Я в цикле генерю экземпляры N символов, это ясно. А как создавать экземпляр функций со своим именем и содержанием? То есть общий шаблон функций один, но в зависимости от инфы в xml файле будут нюансы. Непонятно как во время исполнения программы создавать функции..:confused:
nOobCrafter
11.02.2009, 15:18
Вот для примера кинул код, где мы дублируем кнопки и присваиваем им действия в цикле:
for( i = 0; i < total; i++)
{
var Soft_Download_item = fm_item.duplicateMovieClip("fm_item"+i, i); // вводим переменную для простоты обращения
Soft_Download_item._y = i * (fm_item._height + 4);
Soft_Download_item.Soft_Download_item_title.text = Soft_Download_item_title[i]; // Soft_Download_item_title = массив хранящий текст
Soft_Download_item.no = i; // запоминаем номер для дальнейшего обращения, к кнопке и элементам массивов
Soft_Download_item.onRelease = function()
{
getURL(Soft_Download_item_url[this.no], '_self' ); // Soft_Download_item_url = массив ссылок
}
}
При обращении к кнопке мы привязываем ей определенные элемент массива с таким же номером как у кнопки (для простоты),
например есть 5 кнопок, и есть массив с названиями 5ти элементов, в нашем случае мы первой кнопке присваиваем первый элемент массива, второй - второй и т.д.
Ага, оно.Спасибо, вроде понял.
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.