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

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

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

Регистрация: Apr 2010
Сообщений: 97
Question Обработчики циклом.

Здравствуйте как запустить много обработчиков на кнопки циклом? Есть магазин нужно обрабатывать кнопки делал так, но естественно не получилось, т к значение i меняется и естественно берется последнее значение.

Код AS3:
 
while(i<=10){
bt_head[i].addEventListener(MouseEvent.CLICK, function(){buyItem(head[i]);});
i++;
}

Старый 15.10.2014, 23:01
Gerbert вне форума Посмотреть профиль Найти все сообщения от Gerbert
  № 2  
Ответить с цитированием
Gerbert
Banned
[+1 06.12.14]
[+1 18.12.14]
[+1 30.12.14]

Регистрация: Aug 2014
Сообщений: 461
Можно подробнее?

Старый 15.10.2014, 23:10
stepa323 вне форума Посмотреть профиль Отправить личное сообщение для stepa323 Найти все сообщения от stepa323
  № 3  
Ответить с цитированием
stepa323
 
Аватар для stepa323

Регистрация: Apr 2010
Сообщений: 97
Цитата:
Сообщение от Gerbert Посмотреть сообщение
Можно подробнее?
Да делаю магазин, есть кнопки по нажатию на которые должно покупаться, вот хотелось бы обработать их разом как-то, а не для каждого отдельно создать обработчик.

Старый 15.10.2014, 23:15
Gerbert вне форума Посмотреть профиль Найти все сообщения от Gerbert
  № 4  
Ответить с цитированием
Gerbert
Banned
[+1 06.12.14]
[+1 18.12.14]
[+1 30.12.14]

Регистрация: Aug 2014
Сообщений: 461
А как у Вас логика построена? Много окон с картинкой, ценой и рядом кнопкой "в корзину"?

Старый 15.10.2014, 23:18
stepa323 вне форума Посмотреть профиль Отправить личное сообщение для stepa323 Найти все сообщения от stepa323
  № 5  
Ответить с цитированием
stepa323
 
Аватар для stepa323

Регистрация: Apr 2010
Сообщений: 97
Да , вот скриншот ссылка

Старый 15.10.2014, 23:39
Gerbert вне форума Посмотреть профиль Найти все сообщения от Gerbert
  № 6  
Ответить с цитированием
Gerbert
Banned
[+1 06.12.14]
[+1 18.12.14]
[+1 30.12.14]

Регистрация: Aug 2014
Сообщений: 461
Я бы вот как сделал... Создал контейнер миниокошка и для каждого описал бы json.
Потом бы при создании контейнера кидал бы в конструктор этот данные из этого json
где они бы и сохранялись в свойство? что-то типа
Код AS3:
private var _data:Object;
 
private var _textFieldOne:TextField = new TextField( );
private var _textFieldTwo:TextField = new TextField( );
 
private var _button:Button = new Button( );
 
public function Constructor( )
{
	super.addChild( _textFieldOne );
	super.addChild( _textFieldTwo );
 
	_button.addEventListener( MouseEvent.CLICK, button_clickHandler );
	super.addChild( _button );
}
 
public function setData( data:Object ):void
{
	_data = data;
	this.install( _data );
}
private function install( data:Object ):void
{
	super.addChild( data.img );
	_textFieldOne.text = data.textOne;
	_textFieldTwo.text = data.textTwo;
}
 
private function button_clickHandler( event:MouseEvent ):void
{
	super.dispatchEvent( new CustomEvent( _data ) );
}
Потом создаете таких контайнеров сколько Вам нужно и помещаете в контайнер-страницу и его же
подписываете на событие CustomEvent где изымаете data и складываете в массив корзина.
И если покупатель потом зайдет и захочет посмотреть сколько у него товаров и какие, то добавляете
эту data из массива и показываете ему.

Добавлено через 3 минуты
Забыл самое главное - события должны быть "всплывающими"!

Старый 15.10.2014, 23:50
stepa323 вне форума Посмотреть профиль Отправить личное сообщение для stepa323 Найти все сообщения от stepa323
  № 7  
Ответить с цитированием
stepa323
 
Аватар для stepa323

Регистрация: Apr 2010
Сообщений: 97
Спасибо, но это наверное пока сложновато для моего понимания, я с as 2 только перешел, еще не очень разбираюсь что да как. Есть ли способ именно по клипам обработчиков пустить разом много.

Старый 16.10.2014, 00:03
Gerbert вне форума Посмотреть профиль Найти все сообщения от Gerbert
  № 8  
Ответить с цитированием
Gerbert
Banned
[+1 06.12.14]
[+1 18.12.14]
[+1 30.12.14]

Регистрация: Aug 2014
Сообщений: 461
Код AS3:
var i:int = buttons.length;
while( i-- > 0 ){
	buttons[i].addEventListener( MouseEvent.CLICK, buttons_clickHandler );
}
 
private function buttons_clickHandler( event:MouseEvent ):void
{
	trace( event.target ); // будет кнопка
}
Так?

Добавлено через 1 минуту
Просто не совсем Вас понимаю..

Старый 16.10.2014, 00:15
samana вне форума Посмотреть профиль Отправить личное сообщение для samana Найти все сообщения от samana
  № 9  
Ответить с цитированием
samana
 
Аватар для samana

блогер
Регистрация: Mar 2008
Адрес: Днепропетровск
Сообщений: 1,783
Записей в блоге: 3
Да, находите тот объект, который вызвал событие (как подсказал Gerbert) и вычисляйте его индекс в массиве:
Код AS3:
var i:int = bt_head.length;
while( i-- > 0 )
{
	bt_head[i].addEventListener( MouseEvent.CLICK, buttons_clickHandler );
}
 
private function buttons_clickHandler( event:MouseEvent ):void
{
	buyItem( head[bt_head.indexOf(e.currentTarget)] ); 
}

Старый 16.10.2014, 00:24
stepa323 вне форума Посмотреть профиль Отправить личное сообщение для stepa323 Найти все сообщения от stepa323
  № 10  
Ответить с цитированием
stepa323
 
Аватар для stepa323

Регистрация: Apr 2010
Сообщений: 97
Так этот код сделает обработчики с buttons[0] n к концу выполнения цикла i будет равна нулю, то и все buttons будут с указателем i=0 же?
Код AS3:
var i:int = buttons.length;
while( i-- > 0 ){
	buttons[i].addEventListener( MouseEvent.CLICK, buttons_clickHandler );
}
но спасибо, попробую по вашим примерам сделать. Надеюсь сработает


Последний раз редактировалось stepa323; 16.10.2014 в 00:36.
Создать новую тему Ответ Часовой пояс GMT +4, время: 21:45.
Быстрый переход
  « Предыдущая тема | Следующая тема »  
Опции темы
Опции просмотра

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

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


 


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


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