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

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

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 29.10.2009, 13:19
point111 вне форума Посмотреть профиль Отправить личное сообщение для point111 Найти все сообщения от point111
  № 1  
Ответить с цитированием
point111
[+1 15.06.10]
 
Аватар для point111

Регистрация: Feb 2009
Сообщений: 56
По умолчанию Динамическое создание функций в AS2

Есть массив клипов, который создается динамически, хочется, чтобы процедуры реакции на нажатие каждого клипа тоже генерировались автоматически.
Т.е.:
Код AS1/AS2:
box[0].onRelease = function () {release_fn (0);};
box[1].onRelease = function () {release_fn (1);};
box[2].onRelease = function () {release_fn (2);};
box[3].onRelease = function () {release_fn (3);};
box[4].onRelease = function () {release_fn (4);};
box[5].onRelease = function () {release_fn (5);};
box[6].onRelease = function () {release_fn (6);};

замениь на что-то типа:
Код AS1/AS2:
// не рабочий код
	for (i=0; i<=totalSlides; i++){
		box[i].onRelease = function () {release_fn (i);};
		}
исходник для ковыряния:
http://dddcenter.narod.ru/15/15.zip

Старый 29.10.2009, 13:35
lexa2000lexa вне форума Посмотреть профиль Отправить личное сообщение для lexa2000lexa Найти все сообщения от lexa2000lexa
  № 2  
Ответить с цитированием
lexa2000lexa

Регистрация: Sep 2005
Сообщений: 950
вот
Код AS1/AS2:
	for (i=0; i<=totalSlides; i++){
this["box"+i].id= i;	
this["box"+i].onRelease = function () {release_fn (this.id);};
		}
так


Последний раз редактировалось lexa2000lexa; 29.10.2009 в 13:39.
Старый 29.10.2009, 13:37
iNils вне форума Посмотреть профиль Отправить личное сообщение для iNils Посетить домашнюю страницу iNils Найти все сообщения от iNils
  № 3  
Ответить с цитированием
iNils
Негуру
 
Аватар для iNils

администратор
Регистрация: Jan 2000
Адрес: Кёнигсберг in Moscow
Сообщений: 21,884
Записей в блоге: 7
не так.
1. i общее
2. множество копий одной функции

поэтому так (при условии, что box массив, иначе this["box" + i])
Код AS1/AS2:
for (var i:Number = 0; i < 7; i++) {
	box[i].i = i;
	box[i].onRelease = sample;
}
 
function sample () {
	release_fn (this.i);
};
__________________
(и)Нильс.ru | Плагины для FlashDevelop


Последний раз редактировалось iNils; 29.10.2009 в 14:32.
Старый 29.10.2009, 13:40
lexa2000lexa вне форума Посмотреть профиль Отправить личное сообщение для lexa2000lexa Найти все сообщения от lexa2000lexa
  № 4  
Ответить с цитированием
lexa2000lexa

Регистрация: Sep 2005
Сообщений: 950
а можно вопрос к iNils ? что вот это значит
Код AS1/AS2:
box[0]

Старый 29.10.2009, 14:23
point111 вне форума Посмотреть профиль Отправить личное сообщение для point111 Найти все сообщения от point111
  № 5  
Ответить с цитированием
point111
[+1 15.06.10]
 
Аватар для point111

Регистрация: Feb 2009
Сообщений: 56
iNils, спасибо!

lexa2000lexa, не прикалывайся, ну ошибся человек, надо

Код AS1/AS2:
box[i].i = i;
box[i].onRelease = sample;
главное смысл - каждому клипу дается переменная "i", и вот она будет отправляется в "release_fn", а не номер итерации


Последний раз редактировалось point111; 29.10.2009 в 14:34.
Старый 29.10.2009, 14:33
lexa2000lexa вне форума Посмотреть профиль Отправить личное сообщение для lexa2000lexa Найти все сообщения от lexa2000lexa
  № 6  
Ответить с цитированием
lexa2000lexa

Регистрация: Sep 2005
Сообщений: 950
да каие приколы ,мне даже не понятна вот эта канструкция
Код AS1/AS2:
box[i].i
она ведь недолжна работать. либо она должна работать при условии существования клипа box а уже в нем клипы 1-7, но такого не может быть так как флешь не позволяет название клипов числами. Может я просто чегото не знаю , вот поэтому и спрашиваю.

Старый 29.10.2009, 14:48
point111 вне форума Посмотреть профиль Отправить личное сообщение для point111 Найти все сообщения от point111
  № 7  
Ответить с цитированием
point111
[+1 15.06.10]
 
Аватар для point111

Регистрация: Feb 2009
Сообщений: 56
в первой мессаге я выложил рабочий исходник пятнашек, именно из него взяты фрагменты кода, которые здесь обсуждаются.
Общий смысл такой:
1. создаем массив "box"
2. создаем клип и запихиваем его в первый элемент массива
Код AS1/AS2:
	box[a] = this.createEmptyMovieClip ("bx" + a, -16000 + a);
	this["bx" + a].createEmptyMovieClip ("xxx",0);
	box[a].xxx.loadMovie ("pic" + (1 + a) + ".jpg");
теперь совершенно безразлично, что созданный клип называется "bx" , и что в него вложен другой клип "xxx", (в который я загружаю картинки - ), теперь я обращаюсь к нему как к элементу массива

Цитата:
мне даже не понятна вот эта канструкция
Код AS3:
box[i].i = i;
box[i].onRelease = sample;
можно заменить на
Код AS3:
for (var i:Number = 0; i < 7; i++) {
	box[i].iii = i;
	box[i].onRelease = sample;
}
 
function sample () {
	release_fn (this.iii);
	trace (this.iii)
};

тебя наверно сбило с толку имя "i" после точки, и ты приравнял его к номеру итерации - но, оно может быть любым


Последний раз редактировалось point111; 29.10.2009 в 14:55.
Старый 29.10.2009, 15:31
lexa2000lexa вне форума Посмотреть профиль Отправить личное сообщение для lexa2000lexa Найти все сообщения от lexa2000lexa
  № 8  
Ответить с цитированием
lexa2000lexa

Регистрация: Sep 2005
Сообщений: 950
Нет меня ни это смутило, просто я думал что box это клип а не массив , а так тогда все понятно.

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

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

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


 


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


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