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

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

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

Регистрация: May 2006
Сообщений: 24
По умолчанию OnRelease к дублированным клипам

Добрый день, не могу допереть как сделать.

Есть код, который дублирует клипы

Код AS1/AS2:
for (i=1;i<24;i++){
duplicateMovieClip(b_copy, "b_"+i, x);
temp_mc = this["b_"+i];
}
Нужно нацепить для каждого мувика событие OnRelease. Как это сделать?
Да, сделать нужно в этом же цикле ))
__________________
А хрев быр быр


Последний раз редактировалось udaaff; 05.12.2011 в 14:06.
Старый 05.12.2011, 14:24
alex_195 вне форума Посмотреть профиль Отправить личное сообщение для alex_195 Найти все сообщения от alex_195
  № 2  
Ответить с цитированием
alex_195

Регистрация: Apr 2009
Сообщений: 104
Код AS1/AS2:
for (i=1;i<24;i++){
duplicateMovieClip(b_copy, "b_"+i, x);
temp_mc = this["b_"+i];
temp_mc.onRelease = function() {
this.(действие, которое ты хочешь поцепить дублю при onRelease);
}
}

Старый 05.12.2011, 15:11
iNils вне форума Посмотреть профиль Отправить личное сообщение для iNils Посетить домашнюю страницу iNils Найти все сообщения от iNils
  № 3  
Ответить с цитированием
iNils
Негуру
 
Аватар для iNils

администратор
Регистрация: Jan 2000
Адрес: Кёнигсберг in Moscow
Сообщений: 21,883
Записей в блоге: 7
Лучше и правильнее писать так:
Код AS1/AS2:
for (i = 1; i < 24; i++) {
	var copy = b_copy.duplicateMovieClip (b_copy, "b_" + i, x);
	copy.onRelease = release;
}
function release () {
	//действие, которое ты хочешь поцепить дублю при onRelease;
}
__________________
(и)Нильс.ru | Плагины для FlashDevelop

Старый 05.12.2011, 20:29
kv71 вне форума Посмотреть профиль Отправить личное сообщение для kv71 Найти все сообщения от kv71
  № 4  
Ответить с цитированием
kv71
 
Аватар для kv71

Регистрация: May 2006
Сообщений: 24
Да вроде бы должно так работать. Моя задача по нажатию поменять цвет у определенного объекта на цвет из массива.

Код AS1/AS2:
for (i=1;i<24;i++){
duplicateMovieClip(b_copy, "b_"+i, x);
temp_mc = this["b_"+i];
 
myColor = new Color ("b_" + i+".color_block"); 
myColor.setRGB(colorArray[i]);
 
temp_mc.onRelease = function() {
t_color = new Color ("floor_color"); 
t_color.setRGB(colorArray[i]);
}
 
}
Отдача есть. Но по нажатию на любой из клипов присваивается самый последний цвет, то есть colorArray[23]
А мне надо чтобы по нажатии на
b_1 присваивался colorArray[1] ,
по нажатии на b_2 присваивался colorArray[2] и тд...
__________________
А хрев быр быр


Последний раз редактировалось kv71; 05.12.2011 в 20:31.
Старый 05.12.2011, 20:43
iNils вне форума Посмотреть профиль Отправить личное сообщение для iNils Посетить домашнюю страницу iNils Найти все сообщения от iNils
  № 5  
Ответить с цитированием
iNils
Негуру
 
Аватар для iNils

администратор
Регистрация: Jan 2000
Адрес: Кёнигсберг in Moscow
Сообщений: 21,883
Записей в блоге: 7
kv71, существую правила оформления кода и одно из них гласит, что нужно использовать табуляцию для кода внутри {}. А у вас сейчас каша, весь код на одном уровне вложенности.
Что касается последнего цвета, то проблема в том, что код внутри onRelease сработает когда то там, когда значение счетчика i будет иметь значение полученное в конце цикла. Поэтому вам нужно создать переменную в каждом клипе и хранить там значение i которое было при создании мувиклипа.
__________________
(и)Нильс.ru | Плагины для FlashDevelop

Старый 05.12.2011, 22:09
kv71 вне форума Посмотреть профиль Отправить личное сообщение для kv71 Найти все сообщения от kv71
  № 6  
Ответить с цитированием
kv71
 
Аватар для kv71

Регистрация: May 2006
Сообщений: 24
Да, простите за кашу. Из меня плохой программист. Я с этим и не спорю особо.
Но переменная в каждом клипе - это круто. Особенно если элементов более 200.
__________________
А хрев быр быр

Старый 06.12.2011, 02:43
alex_195 вне форума Посмотреть профиль Отправить личное сообщение для alex_195 Найти все сообщения от alex_195
  № 7  
Ответить с цитированием
alex_195

Регистрация: Apr 2009
Сообщений: 104
Код AS1/AS2:
for (i=1; i<24; i++) {
	duplicateMovieClip(b_copy, "b_"+i, x);
	temp_mc = this["b_"+i];
	temp_mc.n = i;
	myColor = new Color("b_"+i+".color_block");
	myColor.setRGB(colorArray[i]);
	temp_mc.onRelease = function() {
		t_color = new Color("floor_color");
		t_color.setRGB(colorArray[this.n]);
	};
}
Возможно так. Не проверял.

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

администратор
Регистрация: Jan 2000
Адрес: Кёнигсберг in Moscow
Сообщений: 21,883
Записей в блоге: 7
Цитата:
Сообщение от kv71 Посмотреть сообщение
Но переменная в каждом клипе - это круто. Особенно если элементов более 200.
Что у вас в каждом клипе новая функция, вас почему-то не смущает, хотя я показал вариант, когда функция будет одна, а вот переменная смущает.
__________________
(и)Нильс.ru | Плагины для FlashDevelop

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

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

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


 


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


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