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

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

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 14.11.2015, 18:59
caseyryan вне форума Посмотреть профиль Отправить личное сообщение для caseyryan Найти все сообщения от caseyryan
  № 11  
Ответить с цитированием
caseyryan
 
Аватар для caseyryan

Регистрация: Jun 2012
Адрес: Новосибирск
Сообщений: 6,644
Записей в блоге: 4
Цитата:
Каким образом он предотвратит получение мышинных событий контейнером?
Ты вообще пробовал это? Так все делают) Он перекрывает все мышинные события. Ни один объект, находящийся под ним, их не получит

Старый 14.11.2015, 20:38
udaaff вне форума Посмотреть профиль Отправить личное сообщение для udaaff Найти все сообщения от udaaff
  № 12  
Ответить с цитированием
udaaff
...

модератор форума
Регистрация: Sep 2006
Адрес: Minsk
Сообщений: 4,286
Видимо, имелось в виду не контейнером, а стейджем. Можно попробовать ловить события заглушкой и делать stopPropagation(); Ну или смотреть от кого пришел клик, если от заглушки, то ничего не делаем.

Старый 14.11.2015, 22:21
undefined вне форума Посмотреть профиль Отправить личное сообщение для undefined Найти все сообщения от undefined
  № 13  
Ответить с цитированием
undefined

Регистрация: Oct 2006
Сообщений: 2,281
Цитата:
Ни один объект, находящийся под ним, их не получит
Не думал, что буду говорить это тебе
баблинг

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

Регистрация: Jun 2012
Адрес: Новосибирск
Сообщений: 6,644
Записей в блоге: 4
При чем тут бабблинг?) Ты ставишь спрайт, у которого прозрачная заливка во весь размер сцены, поверх всего. Он принимает все щелчки. Или ты думаешь, что я так не делал и просто так это ляпнул? Это отлично работает и в простом флеше и в старлинге. Большая часть попапов именно так и сделана

Но если тебе не нравится идея со спрайтом, то есть еще два варианта. Первый из них я уже написал
Цитата:
Лучше сделай у своих попапов свойство container которому присваивай значение не сцены, а документ класса. По сути, какая тебе разница, будет он добавляться на stage или в документ-объект. Зато у документ объекта ты можешь запросто сделать mouseEnabled = false
А второй - при добавлении попапа, добавляй к сцене слушатель щелчка с приоритетом int.MAX_VALUE, и в его обработчике проверяй что именно было щелкнуто. Если не твой попап, то делай event.stopImmediatePropagation();
Так я тоже делал, и этот вариант тоже 100% рабочий

Старый 14.11.2015, 23:30
Wolsh вне форума Посмотреть профиль Отправить личное сообщение для Wolsh Найти все сообщения от Wolsh
  № 15  
Ответить с цитированием
Wolsh
Нуб нубам
 
Аватар для Wolsh

модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
Кейси, у человека Стейдж подписан на события. Он спрашивает тебя, каким образом добавление в этот Стейдж еще одного объекта заставит Стейдж не принимать события мыши.
__________________
Reality.getBounds(this);

Старый 14.11.2015, 23:58
undefined вне форума Посмотреть профиль Отправить личное сообщение для undefined Найти все сообщения от undefined
  № 16  
Ответить с цитированием
undefined

Регистрация: Oct 2006
Сообщений: 2,281
Цитата:
Кейси, у человека Стейдж подписан на события. Он спрашивает тебя, каким образом добавление в этот Стейдж еще одного объекта заставит Стейдж не принимать события мыши.
ну хоть кто-то понял.

Добавлено через 20 минут
Цитата:
Лучше сделай у своих попапов свойство container которому присваивай значение не сцены, а документ класса.
не до конца понял документ-класс == root? Но у него нет свойства mouseEnabled


Последний раз редактировалось undefined; 15.11.2015 в 00:18.
Старый 15.11.2015, 00:24
Wolsh вне форума Посмотреть профиль Отправить личное сообщение для Wolsh Найти все сообщения от Wolsh
  № 17  
Ответить с цитированием
Wolsh
Нуб нубам
 
Аватар для Wolsh

модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
Цитата:
Но у него нет свойства mouseEnabled
Ну потому что он DisplayObject а не контейнер (как бы странно это ни звучало). Надо приводить к интерактиву или спрайту.
__________________
Reality.getBounds(this);

Старый 15.11.2015, 00:26
undefined вне форума Посмотреть профиль Отправить личное сообщение для undefined Найти все сообщения от undefined
  № 18  
Ответить с цитированием
undefined

Регистрация: Oct 2006
Сообщений: 2,281
Цитата:
А второй - при добавлении попапа, добавляй к сцене слушатель щелчка с приоритетом int.MAX_VALUE
Да, собственно сейчас так и есть, только в обработчике вместо event.stopImmediatePropagation()
происходит закрытие попапа, поэтому останавливать событие нет необходимости.

Добавлено через 12 минут
Цитата:
Ну потому что он DisplayObject а не контейнер
Действительно странно.

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

модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
Цитата:
Действительно странно.
Наверное, потому что некоторые контейнеры скрывают что они контейнеры (TextField, Shape). Но как они могут стать root я не представляю((
__________________
Reality.getBounds(this);

Старый 16.11.2015, 15:05
undefined вне форума Посмотреть профиль Отправить личное сообщение для undefined Найти все сообщения от undefined
  № 20  
Ответить с цитированием
undefined

Регистрация: Oct 2006
Сообщений: 2,281
что-то я совсем запутался
Код AS3:
public function init(e:Event = null):void {
...
(root as DisplayObjectContainer).mouseEnabled=(root as DisplayObjectContainer).mouseChildren = false;
...
по идеи должен выключить мыша на всем стейдже, но не тут то было, все кнопки работают.
Цитата:
Наверное, потому что некоторые контейнеры скрывают что они контейнеры
Интересно это средствами языка делается или на нативном уровне?

Создать новую тему Ответ Часовой пояс GMT +4, время: 16:56.
Быстрый переход
  « Предыдущая тема | Следующая тема »  
Опции темы
Опции просмотра

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

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


 


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


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