Форум 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=134300)

Psycho Tiger 25.12.2009 20:06

Инвертировать всплыв событий. dispatchEvent
 
Использую Broadcaster silin`а. (он рассылает события через статик методы класса).
Много объектов - одни на другом, при клике мышки проверяю, попал ли я на этот объект и тут же останавливаю пропоганду события (чтобы другие объекты не могли его получить). Удаляю объект с дисплей листа.

Проблема в том, то что в моём случае удаляется самый "задний" из всех нажатых объектов. Задний - в смысле, самый низкий по глубине объект. Нужно удалять передний (делаю шутер). Собственно, существуют ли приёмы, чтобы без глобальных извращений (например, убрать остановку пропаганды события и писать все объекты получившего его и попавшие под мышку в какой нибудь статик массив, а потом оттуда уже брать значения и очищать его) сделать то, что мне нужно?

silin 25.12.2009 21:59

если смотреть в контейнере, то
объекты под мышкой: getObjectsUnderPoint
кликнутый объект (т.е. самый верхний) event.target

в чем проблема и причем здесь статический диспатчер непонятно

Psycho Tiger 26.12.2009 00:15

Это всё понятно. В игре присутствует пулемёт, то есть клик как таковой не подходит вовсе. getObjectsUnderPoint - метод тоже хорош, однако по каким то соображениям (не помню уже каким) решил сделать всё через твой класс. Переписывать не очень хочется, вот и спрашиваю, может есть ли ещё варианты.

dimarik 26.12.2009 00:27

А там обязательно слушать на клик "передние" объекты?
Т.е. пропаганда идет только по парентам. Я вот к чему.

Традиционно: пропАганда.

silin 26.12.2009 01:07

если все передается через бродкастер, то там вообще ничего не всплывает, о какой пропаганде речь не совсем понятно..
попробуй поменять порядок добавления слушателей этого бродкастера или напиши свой с сортировкой слушателей по положению в дисплейлисте, хотя зачем он вообще тут нужен тоже неясно
"Переписывать не очень хочется" ни разу не аргумент, если речь о выборе между внятной логикой и шаманством :)

dimarik 26.12.2009 01:19

Silin, поделись ссылкой на заветный класс броадкастера =)

silin 26.12.2009 11:24

http://www.flasher.ru/forum/blog.php?b=85
на самом деле это просто статический диспатчер, который можно слушать откуда угодно и вешать от его имени тоже..
вроде бы и удобно, но по большому счету бардачная вещь

Psycho Tiger 26.12.2009 21:00

Цитата:

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

Цитата:

вроде бы и удобно, но по большому счету бардачная вещь
для проектов однодневок само то)


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

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