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

Вернуться   Форум Flasher.ru > Архив Flasher.ru > Flash > ActionScript

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

Регистрация: Sep 2002
Адрес: Раша\Москоу
Сообщений: 98
Отправить сообщение для Генч с помощью ICQ
По умолчанию Интересный случай...

... как тут быть

for(j=0;j<texts.length;j++){
this["button"+j].onRelease = function() {
num=j;


}
}trace(_root.action_man);

вот такой кодик.
поясню - у меня неизвесное колво кнопок (=texts.length).
я пытаюсь обработать нажатие на них вот таким вот образом.
но, фуфел - трэйс выдаёт всегда 5. на какую бы кнопку я не нажимал.
как бы подругому это сделать?
вариант - написать код в Экшене самой кнопки - не катит.
__________________
Генч.

Старый 01.10.2002, 21:22
Генч вне форума Посмотреть профиль Отправить личное сообщение для Генч Найти все сообщения от Генч
  № 2  
Генч

Регистрация: Sep 2002
Адрес: Раша\Москоу
Сообщений: 98
Отправить сообщение для Генч с помощью ICQ
ох.. парит меня. вот так я хотел написать:



for(j=0;j<texts.length;j++){
this["button"+j].onRelease = function() {
num=j;

_root.action_man = j;
}
}trace(_root.action_man);


и равно всегда не 5ти, а texts.length.
__________________
Генч.

Старый 01.10.2002, 21:31
TTS вне форума Посмотреть профиль Отправить личное сообщение для TTS Найти все сообщения от TTS
  № 3  
TTS
 
Аватар для TTS

Регистрация: Jan 2002
Сообщений: 1,323
Код:
function setonrelease(subj,a){
   subj.onRelease = function() { num=a; _root.action_man = a; }
}

for(....) setonrelease(eval("button"+j),j);
__________________
ВКЛЮЧИ МОЗГИ!!!
Одноразовых граблей не бывает. На большинство из них уже кто-то наступал. (c) Dindin

Старый 01.10.2002, 21:35
Генч вне форума Посмотреть профиль Отправить личное сообщение для Генч Найти все сообщения от Генч
  № 4  
Генч

Регистрация: Sep 2002
Адрес: Раша\Москоу
Сообщений: 98
Отправить сообщение для Генч с помощью ICQ
TSS всегда рядом.
__________________
Генч.

Старый 02.10.2002, 01:10
Nox Noctis вне форума Посмотреть профиль Отправить личное сообщение для Nox Noctis Посетить домашнюю страницу Nox Noctis Найти все сообщения от Nox Noctis
  № 5  
Nox Noctis
don't panic!
 
Аватар для Nox Noctis

Регистрация: Aug 2001
Сообщений: 4,121
вариант, который предложил TTS "стилистически" правильнее, но работать тоже не будет :)
все присвоения, которые вы делаете в теле создаваемой функции произойдут уже в момент ее создания...
то есть сколько нужно раз тем переменным присвоится какое-то значение, но потом, при выполнении онРелизов - желаемого эффекта не будет...
Код:
function setonrelease(subj, a) {
	subj.onRelease = function() {
		_root.action_man = this.num;
		trace(_root.action_man);
	};
	subj.num = a;
}
for (i=0; i<5; i++) {
	setonrelease(this["button"+i], i);
}
так работать будет - то есть в сами кнопки надо запихать свойство, значение которого потом надо передавать в _root.action_man


и вообще - с динамическим созданием функций надо работать оч аккуратно...
мы тут спорили как-то с Джоном по этой части...
...и пришли к выводу, что это может работать самым неожиданным образом :))

например:
Код:
function a() {
	var p = "!!!!"
	var b = function () {
		var test = p
		trace(test);
	};
	var p = "????"
	return b;
}
a()();
...улавливаете ? ;)
берем переменную,
создаем функцию, которая использует ее значение
(а указателей-то на строковые и числовые переменные во флэше как-бы нет вообще-то...)
а уже _после_ создания функции меняем значение переменной...

...и что получаем ? функция использует последнее значение _временной_ переменной...
чудеса...


Последний раз редактировалось Nox Noctis; 02.10.2002 в 01:13.
Старый 02.10.2002, 01:22
УильямБрэдберри вне форума Посмотреть профиль Отправить личное сообщение для УильямБрэдберри Посетить домашнюю страницу УильямБрэдберри Найти все сообщения от УильямБрэдберри
  № 6  
УильямБрэдберри
Мастер Цифрового Облика
 
Аватар для УильямБрэдберри

Регистрация: Apr 2000
Адрес: где-то там...
Сообщений: 4,510
Отправить сообщение для УильямБрэдберри с помощью AIM Отправить сообщение для УильямБрэдберри с помощью Yahoo
for (j=0; j<texts.length; j++) {
this["button"+j].num = j;
this["button"+j].onRelease = function() {
trace(this.num);
};
}

Старый 02.10.2002, 01:27
Nox Noctis вне форума Посмотреть профиль Отправить личное сообщение для Nox Noctis Посетить домашнюю страницу Nox Noctis Найти все сообщения от Nox Noctis
  № 7  
Nox Noctis
don't panic!
 
Аватар для Nox Noctis

Регистрация: Aug 2001
Сообщений: 4,121
вот, видите ? :)
УильямБрэдберри тоже так считает :)
значит вы на правильном пути :))

а использовать или не использовать функцю для создания онРелизов -
зависит от слсжности конструкций в конкретном случае...
просто как удобнее :)

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

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

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


 


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


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