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

Dukobpa3 04.12.2010 15:07

Контейнер прехватывает клики чилда
 
Есть вот такая конструкция:
http://burdun.com/shared/bojan.png

Это заголовок аккордеона. Соответственно он является кликабельным. А вот это справа на нем тоже две кнопки. Хотелось бы чтобы и они были кликабельными:) Но не получается. Битый час лажу по форуму ниче найти не могу (но вроде как видел похожую тему).

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

Нарыл что-то про stopPropagation, но или не до конца разобрался, или это не для моего случая.

Reon 04.12.2010 16:20

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

Dukobpa3 05.12.2010 00:10

Короче, сделал так:
http://burdun.com/shared/bojan2.png
Для данной задачи как по мне - то оптимальное решение, и ошибки юзабилити отсутствуют, а то как-то кнопка на кнопке не совсем по правилам построения интерфейсов :)

А про события надо бы теории подчитать видимо.....

Wolsh 05.12.2010 03:28

Хм.
Хедер окна в Виндос - кликабельный. При этом на нем три кнопки и иконка-кнопка (просто ближайший пример). Нет такого "правила построения интерфейсов". И понимание событий тут не совсем при делах. Скорее надо разобраться с дисплей-листом. Даже если холодильник стеклянный - все равно надо открыть дверцу, чтобы достать сгущенку. Но если сгущенка стоит на столе на фоне холодильника, то можно и дверцу открывать, и сгущенку лопать. Если деньги в бумажнике - вы не можете положить их на стол, вы кладете бумажник. Вы совершаете действие с контейнером. Откройте контейнер (снимите с него мышиные слушатели) - и можете располагать всеми купюрами как хотите.

Dukobpa3 05.12.2010 04:08

Насчет хедера окна таки да, это загнался. Но всё-таки для этой задачи мое решение подходит. Ну не важно, вопрос решен...

Цитата:

Сообщение от Wolsh
Откройте контейнер (снимите с него мышиные слушатели)

Но мне то всё-равно надо чтобы клики по хедеру работали, чтобы аккордеон панельку сворчивал и разворачивал. Но кроме этого на этом хедере еще кнопки висят.

//*********************
Хотя только что пока отвечал дошло ваше сообщение
Цитата:

- до вас письмо дошло
- пять раз перечитал, а всё-равно не дошло:).
Можно сворачивание/разворачивание вешать не на хедер. Оставить хедер в роли контейнера. Влепить ему маску - какой-то прозрачный/полупрозрачный спрайт, на маску слушатель для сворачивания. А на кнопки свои слушатели.

Получится хедер как контейнер в котором равноправные элементы, которые не будут перекрывать друг друга:
- маска - ловит основной клик по хедеру
- кнопка1 - ловит свои клики
- кнопка2 - ловит свои клики

И получится типа сгущенка перед хододильником
- маска-холодильник,
- перед ней кнопка-схущенка,
но связи никакой между ними нет, кроме того что они находятся в одной комнате (контейнере)...

Wolsh 05.12.2010 05:58

Точно. Только слово "маска" не надо использовать здесь - создает еще одну запутанность. У вас просто маленькие кнопки на фоне большой. И все в одном контейнере, который сам неактивен ("комнате")))

Dukobpa3 05.12.2010 06:16

Собственно то же самое и Reon говорил:)
Его сообщение теперь тоже дошло :)

Reon, Wolsh, спасибо за помощь))


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

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