Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 05.02.2013, 13:35
stasuss вне форума Посмотреть профиль Отправить личное сообщение для stasuss Найти все сообщения от stasuss
  № 1  
Ответить с цитированием
stasuss
 
Аватар для stasuss

Регистрация: Jun 2011
Сообщений: 19
Question всплывающее меню

Всем привет.

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

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

Есть ли какой то простой способ скрыть меню, при клике вне него (вот прямо как сделано на рабочем столе Windows)?

Старый 05.02.2013, 13:43
FlashRus вне форума Посмотреть профиль Отправить личное сообщение для FlashRus Найти все сообщения от FlashRus
  № 2  
Ответить с цитированием
FlashRus
 
Аватар для FlashRus

Регистрация: Nov 2006
Адрес: СПб
Сообщений: 921
Отправить сообщение для FlashRus с помощью ICQ Отправить сообщение для FlashRus с помощью Skype™
Внутри меню слушать Event.ADDED_TO_STAGE.
Как только событие произошло, мы можем подписаться на MouseEvent.CLICK у DisplayObject#stage. Событие возникло - сворачиваем меню.
Тем самым, отпадает какая либа нужда в менеджере и кастомных сообщений из вне.

Старый 05.02.2013, 13:57
caseyryan вне форума Посмотреть профиль Отправить личное сообщение для caseyryan Найти все сообщения от caseyryan
  № 3  
Ответить с цитированием
caseyryan
 
Аватар для caseyryan

Регистрация: Jun 2012
Адрес: Новосибирск
Сообщений: 6,644
Записей в блоге: 4
Цитата:
Есть ли какой то простой способ скрыть меню, при клике вне него (вот прямо как сделано на рабочем столе Windows)?
Да, подписать stage на событие MouseEvent.MOUSE_UP и по нему прятать менюшку, если event.target не равно какому-то пункту меню

а я бы вообще создал класс пункта меню (он же по-любому будет как-то выглядеть), и в обработчике MOUSE_UP проверял бы
Код AS3:
private function onMouseUp(e:MouseEvent):void {
    if (!(e.target is MenuItem)) {
         hideMenu(); 
    } else {
         openMenu(e.target as MenuItem);
         hideMenu();
     }
}

Старый 05.02.2013, 14:03
stasuss вне форума Посмотреть профиль Отправить личное сообщение для stasuss Найти все сообщения от stasuss
  № 4  
Ответить с цитированием
stasuss
 
Аватар для stasuss

Регистрация: Jun 2011
Сообщений: 19
спасибо за ответ. но я похоже совсем нуб. у меня меню совсем не появляется теперь.. похоже оно уничтожается сразу после создания..

вообщем дело в том что оно создается при клике на объект. и когда я регистрирую событие глобального клика, то оно сразу же и срабатывает. помогите пожалуйста(

вспомнил про Event.StopPropagation(), останавливаю в событии клика, перед созданием объекта меню. Все хорошо, не считая того что у меня несколько объектов, при клике на которые создаются менюшки. И такой способ не убирает меню, если кликнуть по другому объекту, который просто создает второе меню.

Добавлено через 54 минуты
никто не подскажет?


Последний раз редактировалось stasuss; 05.02.2013 в 14:51.
Создать новую тему Ответ Часовой пояс GMT +4, время: 21:54.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


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


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