Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 1.0/2.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 21.06.2005, 15:04
Дмитрий Шкаричев вне форума Посмотреть профиль Отправить личное сообщение для Дмитрий Шкаричев Найти все сообщения от Дмитрий Шкаричев
  № 1  
Ответить с цитированием
Дмитрий Шкаричев

Регистрация: Nov 2004
Сообщений: 17
По умолчанию Movieclip'ы в роли кнопок. Если их много?

Есть около 20-30 movieclip'ов, выполняющих роль кнопки. Текст для них задается вот так
_root.clip1.textfield=text1;
А при наведении, клике и прочем делается что-то:
clip1.onRollOver=function(){clip1.gotoAndPlay(2);}
clip1.onPress=function(){getURL(...);}

Причем у всех одинаково за исключением ссылки, на которую эти кнопки ведут. Как избежать многократного повторения кода для всех этих клипов?


Последний раз редактировалось Дмитрий Шкаричев; 21.06.2005 в 15:05. Причина: ошибка
Старый 21.06.2005, 15:14
Nirth вне форума Посмотреть профиль Отправить личное сообщение для Nirth Посетить домашнюю страницу Nirth Найти все сообщения от Nirth
  № 2  
Ответить с цитированием
Nirth
4AM Games
 
Аватар для Nirth

блогер
Регистрация: Nov 2002
Адрес: Sofia
Сообщений: 6,264
Записей в блоге: 1
Отправить сообщение для Nirth с помощью ICQ Отправить сообщение для Nirth с помощью AIM Отправить сообщение для Nirth с помощью MSN Отправить сообщение для Nirth с помощью Yahoo Отправить сообщение для Nirth с помощью Skype™
если кнопоки имеют похожие имена(clip1,clip2,clip3) то через цикл
Код:
for(i=1;i<21;i++) {
_root["clip"+i].textField.text=_root["text"+i];
_root["clip"+i].onRollOver = function .....
_root["clip"+i].onPress = functon ......
Если имена разные то есть еще два варианта, занести предварительно кнопки в массив
Код:
var but_array:Array = new Array(_root.but1,_root.menu.but2, ...и так далее);
после чего аналогичным способом через цикл for прогнать их, плюсы в том что нам даже всеравно где они находяться.

Третий способ, если кнопки находяться в одном мувике, и кроме них ничего там нету, то делаем через цикл for in
Код:
for(var but:String in menu_mc) {
menu_mc[but].onPress = function (){}
}
__________________
Я перестал переписывать, начал редактировать, еще лет 15 и я стану писателем ^_^

Старый 21.06.2005, 15:33
Дмитрий Шкаричев вне форума Посмотреть профиль Отправить личное сообщение для Дмитрий Шкаричев Найти все сообщения от Дмитрий Шкаричев
  № 3  
Ответить с цитированием
Дмитрий Шкаричев

Регистрация: Nov 2004
Сообщений: 17
спасибо большое!

Старый 21.06.2005, 15:39
  № 4  
Ответить с цитированием
Captain Crocus
Guest

Сообщений: n/a
Есть еще способ. Создай класс, где описан общий код, там же задай метод для принятия индивидуальных параметров и динамического создания ролловера и пресса, затем зарегистририруй через Object.registerClass, все создаваемые кнопки, будут иметь общий код, а потом передавай данные методам экземпляров, примерно как указал Nirth.

Старый 21.06.2005, 15:43
Nirth вне форума Посмотреть профиль Отправить личное сообщение для Nirth Посетить домашнюю страницу Nirth Найти все сообщения от Nirth
  № 5  
Ответить с цитированием
Nirth
4AM Games
 
Аватар для Nirth

блогер
Регистрация: Nov 2002
Адрес: Sofia
Сообщений: 6,264
Записей в блоге: 1
Отправить сообщение для Nirth с помощью ICQ Отправить сообщение для Nirth с помощью AIM Отправить сообщение для Nirth с помощью MSN Отправить сообщение для Nirth с помощью Yahoo Отправить сообщение для Nirth с помощью Skype™
и в правду че это я забыл о классах =)
__________________
Я перестал переписывать, начал редактировать, еще лет 15 и я стану писателем ^_^

Старый 22.06.2005, 17:08
Дмитрий Шкаричев вне форума Посмотреть профиль Отправить личное сообщение для Дмитрий Шкаричев Найти все сообщения от Дмитрий Шкаричев
  № 6  
Ответить с цитированием
Дмитрий Шкаричев

Регистрация: Nov 2004
Сообщений: 17
Цитата:
Сообщение от Nirth
если кнопоки имеют похожие имена(clip1,clip2,clip3) то через цикл
Код:
for(i=1;i<21;i++) {
_root["clip"+i].textField.text=_root["text"+i];
_root["clip"+i].onRollOver = function .....
_root["clip"+i].onPress = functon ......
странно. но работает только для последней кнопки. По видимому цикл проигрывается, и запоминает только последние указания.. Что делать?
Код стоит просто в root.

Старый 22.06.2005, 17:13
Greben вне форума Посмотреть профиль Отправить личное сообщение для Greben Посетить домашнюю страницу Greben Найти все сообщения от Greben
  № 7  
Ответить с цитированием
Greben
 
Аватар для Greben

Регистрация: Mar 2004
Адрес: MoSKA
Сообщений: 534
Отправить сообщение для Greben с помощью ICQ Отправить сообщение для Greben с помощью Skype™
Цитата:
по видимому цикл проигрывается, и запоминает только последние указания.
не могет такого быть!
может у тебя где-нибудь косяк с кнопками? ты их как создаешь?

Старый 22.06.2005, 17:16
Greben вне форума Посмотреть профиль Отправить личное сообщение для Greben Посетить домашнюю страницу Greben Найти все сообщения от Greben
  № 8  
Ответить с цитированием
Greben
 
Аватар для Greben

Регистрация: Mar 2004
Адрес: MoSKA
Сообщений: 534
Отправить сообщение для Greben с помощью ICQ Отправить сообщение для Greben с помощью Skype™
Цитата:
Причем у всех одинаково за исключением ссылки
а почему не воткнуть в сам клип this.onRollover и т.д.?

Старый 22.06.2005, 17:17
  № 9  
Ответить с цитированием
Captain Crocus
Guest

Сообщений: n/a
проверь имена всех клипов на сцене. или положи код.

Старый 22.06.2005, 17:23
Дмитрий Шкаричев вне форума Посмотреть профиль Отправить личное сообщение для Дмитрий Шкаричев Найти все сообщения от Дмитрий Шкаричев
  № 10  
Ответить с цитированием
Дмитрий Шкаричев

Регистрация: Nov 2004
Сообщений: 17
Цитата:
Сообщение от Greben
не могет такого быть!
может у тебя где-нибудь косяк с кнопками? ты их как создаешь?
Создаю так:
- клип с прямоугольником и сверху текстовое поле. имя ему clip1 и txt
- в роот.е пишу:

Код:
_root.clip1.txt=название кнопки;

clip1.onRollOver=function(){
	clip1.gotoAndPlay(2);
	}
clip1.onPress=function(){getURL(link1);}
clip1.onRollOut=function(){
	clip1.gotoAndPlay(11);
	}
И так повторяю до 20 кнопок, и работает. Почему то через цикл, как сказал Nirth не получается.

Создать новую тему Ответ Часовой пояс GMT +4, время: 01:32.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


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


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