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

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

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

Регистрация: Oct 2006
Адрес: Novosibirsk-Kaliningrad
Сообщений: 1,278
Отправить сообщение для terbooter с помощью ICQ Отправить сообщение для terbooter с помощью Skype™
По умолчанию Event flow. Передать событие от одного объекта другому.

1) Допустим есть много-много кнопок, при нажатии на каждую генерится событие.
Как слушателем для всех кнопок сделать одну функцию?

2) Как реализовать при создании классов, что один объект является слушателем кастомного события другого.
Что-то вроде:

Код:
 var objA:ClassA=new ClassA();
var objB:ClassB=new ClassB();

objA.generateCustomEvent();
//Происходит событие слушателем которого является метод
//объекта objB.

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

блогер
Регистрация: Jul 2007
Сообщений: 940
Записей в блоге: 3
2 - читайте про метод addEventListener

1 - тоже читайте) добавляете слушателя("одну функцию") к паренту этих кнопок и третий параметр (bubble) ставите в true


Последний раз редактировалось fljot; 17.12.2007 в 22:07.
Старый 17.12.2007, 22:43
andrey_x вне форума Посмотреть профиль Отправить личное сообщение для andrey_x Посетить домашнюю страницу andrey_x Найти все сообщения от andrey_x
  № 3  
Ответить с цитированием
andrey_x
 
Аватар для andrey_x

Регистрация: May 2007
Адрес: Украина, Запорожье
Сообщений: 74
Отправить сообщение для andrey_x с помощью ICQ
У меня похожий вопрос, поэтому решил не создавать новую тему...

у меня есть массив мувиклипов.
я к каждому привязываю
pictures[i].addEventListener(MouseEvent.CLICK ,showme);
так вот, а как в этой функции узнать, по какому именно мувику кликнули??

код вида

pictures[i].addEventListener(MouseEvent.CLICK ,showme(i));

function showme(Event:MouseEvent, int jk){
trace(jk);
}

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

Старый 17.12.2007, 22:57
fljot вне форума Посмотреть профиль Отправить личное сообщение для fljot Найти все сообщения от fljot
  № 4  
Ответить с цитированием
fljot

блогер
Регистрация: Jul 2007
Сообщений: 940
Записей в блоге: 3
andrey_x, второй аргумент уберите нафиг. по каком мувику кликнули лежит в e.target :

Код:
pictures[i].addEventListener(MouseEvent.CLICK ,showMe);

function showMe(e:MouseEvent) {
trace(e.target);
}

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

Регистрация: May 2007
Адрес: Украина, Запорожье
Сообщений: 74
Отправить сообщение для andrey_x с помощью ICQ
гмм... не лежит
там лежит .. пишет "Object Loader" вобщем...
это как то слишком глобально... )

currentTarget тоже не помог....
в нем лежит "Item" - так называется класс, из которого созданы pictures[i] ..


Последний раз редактировалось andrey_x; 17.12.2007 в 23:47.
Старый 17.12.2007, 23:48
fljot вне форума Посмотреть профиль Отправить личное сообщение для fljot Найти все сообщения от fljot
  № 6  
Ответить с цитированием
fljot

блогер
Регистрация: Jul 2007
Сообщений: 940
Записей в блоге: 3
ну значит pictures[i] это Loader.. чего не устраивает то?)

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

Регистрация: May 2007
Адрес: Украина, Запорожье
Сообщений: 74
Отправить сообщение для andrey_x с помощью ICQ
.. а как вот это вот i узнать.... тоесть.. номер мувика в массиве..

решил проблему.... сделал класс dynamic, и при создании мувиков pictures[i], добавил им свойство UID= i .

потом, обращаясь через e.currentTarget.UID все отлично ))


Последний раз редактировалось etc; 18.12.2007 в 13:48.
Старый 18.12.2007, 00:48
fljot вне форума Посмотреть профиль Отправить личное сообщение для fljot Найти все сообщения от fljot
  № 8  
Ответить с цитированием
fljot

блогер
Регистрация: Jul 2007
Сообщений: 940
Записей в блоге: 3
не понимаю зачем номера.. в таргете содержится уже ссылка на нужный объект(по котором кликнули)

Старый 18.12.2007, 11:05
terbooter вне форума Посмотреть профиль Отправить личное сообщение для terbooter Найти все сообщения от terbooter
  № 9  
Ответить с цитированием
terbooter

Регистрация: Oct 2006
Адрес: Novosibirsk-Kaliningrad
Сообщений: 1,278
Отправить сообщение для terbooter с помощью ICQ Отправить сообщение для terbooter с помощью Skype™
andrey_x,
Код:
onEventFunction(e:Event){
  trace(e.target)
}
В девятом посте то же самое.

Мой же вопрос можно свести к такому:
как избежать в "рутовом" классе присваивания
каждому таргетному объекту слушателя.
Тк это могут быть совсем разные объекты и имет разные имена,
цикл не поможет, придется добавлять каждого отджельно.

Паттерн Observer это не ответ на мой вопрос?

Старый 18.12.2007, 13:28
fljot вне форума Посмотреть профиль Отправить личное сообщение для fljot Найти все сообщения от fljot
  № 10  
Ответить с цитированием
fljot

блогер
Регистрация: Jul 2007
Сообщений: 940
Записей в блоге: 3
я ж тебе написал про bubble
http://www.adobe.com/devnet/actionsc...ng_as3_03.html

т.е. если container это объект где лежат твои кнопки всякие, то
Код:
container.addEventListener(MouseEvent.CLICK, onClick, true);
function onClick(e:MouseEvent):void {
	trace(e.target);
	e.target.alpha = 0.5;
}
и каждому добавлять не надо


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

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

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


 


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


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