Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Получить мувик, который вещает событие (http://www.flasher.ru/forum/showthread.php?t=202513)

TurboDizel 20.07.2013 18:42

Получить мувик, который вещает событие
 
Есть три класса: главный (Main.as), Menu.as, Slot.as. Объект класса Slot (_slot1) добавлен в объект класса Menu.as (_menu). _slot1 вещает событие в своего parent`а (в _menu), и это событие ловится из Main.as. Т.е.:
Код AS3:

//в Slot`е
parent.dispatchEvent(new Event("event"));
 
//в Main.as
_menu.addEventListener("event", ev);
 
function ev(e:Event):void {
 
}

Как мне в функции ev(e:Event) получить мой _slot1? А то e.currentTarget возвращает _menu.

KumoKairo 20.07.2013 21:50

http://stackoverflow.com/questions/5...-currenttarget
Сам часто путал target и currentTarget

target - это то, что вещает событие (то есть ваш мувик)
currentTarget - это то, что подписано на событие (то есть контейнер в вашем случае)

UPDATE========

Блин, и правда же
Код AS3:

parent.dispatchEvent(...)

>.< А я то думал слот1 диспатчит

raltm 20.07.2013 23:22

в данном случае target и currentTarget покажут одно и то же
почему бы slot1 самому не рассылать событие?

Код AS3:

//в Slot`е
dispatchEvent(new Event("event"), true);

в menu его все равно можно отловить и добраться к нему через target

TurboDizel 22.07.2013 18:03

Цитата:

Сообщение от raltm (Сообщение 1141546)
в данном случае target и currentTarget покажут одно и то же
почему бы slot1 самому не рассылать событие?

У меня добавлено 6 слотов, и не хотелось бы писать вот такое:
Код AS3:

_slot1.addEventListener("Event", func);
_slot2.addEventListener("Event", func);
_slot3.addEventListener("Event", func);
_slot4.addEventListener("Event", func);
_slot5.addEventListener("Event", func);
_slot6.addEventListener("Event", func);

Одним слушателем было бы как-то по-правильнее, но видимо придется сделать так, как вот привел пример.

Wolsh 22.07.2013 20:16

Цитата:

У меня добавлено 6 слотов, и не хотелось бы писать вот такое:
Цитата:

в menu его все равно можно отловить и добраться к нему через target
Читайте ответы внимательней. Люди стараются для Вас.

chamele0n 22.07.2013 20:20

ну так в цикле добовляй слушатели, а то придется каждый раз заморачиваться при изменении кол-ва слотов
ну или другой вариант расширить класс Event запихнув в нету переменую slot

raltm 22.07.2013 21:15

Цитата:

Сообщение от TurboDizel (Сообщение 1141708)
У меня добавлено 6 слотов, и не хотелось бы писать вот такое:
...
Одним слушателем было бы как-то по-правильнее, но видимо придется сделать так, как вот привел пример.

такого писать и не надо
достаточно
Код AS3:

_menu.addEventListener("Event", function(e:Event):void{trace(e.target);});



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

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