Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   dispatchEvent потомкам (http://www.flasher.ru/forum/showthread.php?t=146524)

AleXNoD GD 10.11.2010 15:52

dispatchEvent потомкам
 
Извиняюсь за ламерский вопрос, можно ли из stage передать событие в потомок класса stage? На примере:

Код AS3:

var a = new Sprite();
addChild(a);
a.addEventListener('ululu', function(e){
        trace('GET ULULU');
});
//
trace('POST ULULU');
dispatchEvent(new Event('ululu'));

Не работает. Работают только пузырьки - если отправлять событие в потомке, принимать в родителе. Только нужно сделать наоборот - отправлять в родителе, получать в потомке.

Bgg 10.11.2010 16:00

Да, пузыри не тонут.
Управляйте потомками через публичные методы.

Psycho Tiger 10.11.2010 16:02

Код AS3:

a.dispatchEvent

А вообще потомкам приказывают

AleXNoD GD 10.11.2010 16:07

Может вопрос некорректно поставлен. Нужно отловить событие mouseUp со stage и оповестить об этом n-ное количество вложенных мувиков.

Psycho Tiger 10.11.2010 16:13

Вложенное количество мувиклипов сами должны подписаться на mouseUp у stage.

AleXNoD GD 10.11.2010 16:17

Если они подпишутся на stage, как потом от них избавиться, чтоб не висели addEventListener'ы на stage, при том не делая деструктора? weakReference поможет? Просто если mouseUp можно послать по низам, там отпадают многие проблемы, всё начинает работать весело и дружно, но если это невозможно..

TanaTiX 10.11.2010 16:26

Цитата:

Сообщение от Psycho Tiger (Сообщение 948833)
Код AS3:

a.dispatchEvent

А вообще потомкам приказывают

Ага, только не dispatch, а прямой вызов функции

samana 10.11.2010 16:48

Положите мувики в массив, и обрабатывайте его в stage.MOUSE_UP

AleXNoD GD 10.11.2010 17:20

Хотя нашел еще способ писать mousedown=true в root, и брать оттуда по необходимости. В этом случае подойдет вариант. Еще паранойя обострилась по поводу garbage collector'a, но это другая тема :) Благодарю за советы.

Psycho Tiger 10.11.2010 20:08

Цитата:

Ага, только не dispatch, а прямой вызов функции
1) Вызов метода
2) Вызов приватного обработчика? А как быть с приоритетами и множественной подпиской на одно событие? Дёргать все методы?
3) Про прямой вызов метода я тоже написал.

Цитата:

Если они подпишутся на stage, как потом от них избавиться, чтоб не висели addEventListener'ы на stage, при том не делая деструктора? weakReference поможет?
Поможет.
Но лучше подписываться по ADDED_TO_STAGE и отписываться от REMOVED_FROM_STAGE. К чему такой страх перед "деструктором"?

Цитата:

Просто если mouseUp можно послать по низам, там отпадают многие проблемы, всё начинает работать весело и дружно, но если это невозможно..
События мыши без реального клика пользователя можно послать только хаком (в 9 версии так было, сейчас может ситуация изменилась). О реализации обычного открытого метода для сообщения о клике отлично сказал samana.


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

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