Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Нужно сбросить (проигнорировать) MOUSE_DOWN при выводе кнопки (http://www.flasher.ru/forum/showthread.php?t=163384)

mikhailk 08.08.2011 15:34

Нужно сбросить (проигнорировать) MOUSE_DOWN при выводе кнопки
 
Задача банальная до невозможности, поэтому не хочется городить чего-то сложного. На локации есть айтем, при нажатии на него он улетает в сумку, но если сумки нет, ее предлагается купить. Соответственно, по центру экрана выходит конфирм с предложением купить сумку "Да"/"Нет". Кнопки его реагируют на MOUSE_DOWN.

Столкнулся с занятной ситуацией - если так случилось, что кнопка "Да" открывается строго над айтемом (т.е., прямо под мышкой), то она тут же захватывает MOUSE_DOWN и автоматически нажимается. Скажу сразу, e.stopImmediatePropagation() в самом айтеме стоит, так что это не спасает.

Пока видится вариант с проверкой MOUSE_DOWN при выводе кнопки и выставлении на нее блокировки, пока по ней не отработает MOISE_OUT... Может есть способ проще?

derhab 08.08.2011 15:46

Цитата:

выходит конфирм с предложением купить сумку "Да"/"Нет". Кнопки его реагируют на MOUSE_DOWN
а почему не на CLICK? по-моему в подобном случае это более правильно

carrotoff 08.08.2011 15:51

может временно на нажатый итем ставить mouseEnabled = false?

mikhailk 08.08.2011 16:16

Цитата:

а почему не на CLICK? по-моему в подобном случае это более правильно
На MOUSE_DOWN повешен звук (клик).


Цитата:

может временно на нажатый итем ставить mouseEnabled = false?
Событие возникает на самой кнопке, как я понимаю.


Наверное, самый простой вариант такой:

1. При показе кнопки проверяем, не находится ли она под мышкой. Если не находится - все в порядке.
2. Если находится - слушаем MOUSE_OUT, а в слушателе - подписываемся на MOUSE_DOWN

derhab 08.08.2011 16:30

может проверять currentTarget, если это кликнутый айтем, то ничего не делать с кнопкой открывшегося конфирма?

mikhailk 08.08.2011 16:34

хм, сейчас проведу эксперимент...

Добавлено через 21 минуту
Нет, target и currentTarget там совпадают. Оказалось, правда, что я ошибся с событием. Отрабатывает кнопка не по MOUSE_DOWN, а по MOUSE_UP (по MOUSE_DOWN только звук) . Но сути это не меняет, поскольку захватывает она все равно событие не вовремя. :)

Получается, видимо все-таки тот вариант, который я написал (с проверкой, не под мышкой ли кнопка).

alatar 08.08.2011 17:02

В кнопке по MOUSE_DOWN устанавливать флаг, по MOUSE_UP проверять и если флаг установлен, запускать звук.

mikhailk 08.08.2011 17:05

Цитата:

В кнопке по MOUSE_DOWN устанавливать флаг, по MOUSE_UP проверять и если флаг установлен, запускать звук.
Ну да.
Действительно.
Не звук, но не суть.


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

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