![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|||||
|
Регистрация: Jun 2008
Адрес: курский вокзал
Сообщений: 1,114
|
Возникла проблема с MouseWheel во вложенных контейнерах.
Положим у нас контейнер, в нем скролится другой контейнер, в котором в свою очередь тоже есть скрол. Если я пишу в самом скроле stage.addEventListener(MouseEvent.MOUSE_WHEEL, wheelHandler); private function wheelHandler(e:MouseEvent):void { if (!hitTestPoint(e.stageX, e.stageY) && !mask.hitTestPoint(e.stageX, e.stageY)) return; //тут функция сдвигающая ползунок и скролируемый клип } Как вариант, может прицепить колесо к Main.as и там проверять что под мышью? В общем я запутался с этим колесом, может кто знает пример скролла на AS3.0?
__________________
Я просто добрый шутник. Последний раз редактировалось scarbo; 02.11.2009 в 14:59. |
|
|||||
|
Регистрация: Jun 2008
Адрес: курский вокзал
Сообщений: 1,114
|
точняк, как проверить является ли он детём?, внуком?
__________________
Я просто добрый шутник. |
|
|||||
|
буду краток
модератор форума
Регистрация: Sep 2003
Адрес: Ближайшее Замкадье
Сообщений: 3,110
Записей в блоге: 28
|
следите за фокусом. во время смены фокуса - отключайте слушателей колеса у предыдущего фокуса и включайте на текущем.
как определять что в фокусе - уже ваше дело (можно по координатам мыши, можно по хиттесту, можно еще как..)
__________________
Отряд Котовскага |
|
|||||
|
Регистрация: Jun 2008
Адрес: курский вокзал
Сообщений: 1,114
|
чета не выходит.
Значит есть класс ScrollBar, в нем реализованы - размещение кнопок вверх, вниз, ползунок и трэк, и их взаимодействие с мышью(границы перемещения ползунка, и его движение вверх-вниз, в зависимости от нажатой кнопки, при движении ползунка рассылается событие ScrollEvent.SCROLL, с указанием его процентной сдивнутости) Есть класс ScrollPlane, в нем реализованы - размещение конейнера для скролируемых объектов, сам скролл и маска.Слушается событие ScrollEvent.SCROLL, в зависимости от этого двигаем контейнер. На главной - лежит StagePlane(потомок ScrollPlane) и в нем уже лежит куча объектов, среди котрых есть например TextArea для прайс-листа. Для наглядности скрин ![]() ### ### ### Паралельно вопрос: в As2 я делал скролы используя scrollRect, в As3 не поучается, из-за того что, если я контейнеру прописываю scrollRect, а потом полоиж удалю из него всех детей, то его высота и ширина не становятся равными 0, как ожидалось, а сохраняются старые размеры, приведенние scrollRect=null, результата не дают. Какие будут соображения?
__________________
Я просто добрый шутник. Последний раз редактировалось scarbo; 02.11.2009 в 22:29. |
|
|||||
|
2 Scarbo
Вы же где-то подписываетесь на MOUSE_WHEEL? Вот и отписывайтесь обратно =) То есть на все скроллируемые объекты вешаем один обработчик на 2 события 1) MOUSE_OUT 2) MOUSE_OVER В этом обработчике отписываем все скроллируемые объекты от MOUSE_WHEEL и подписываем только тот, на который был последний MOUSE_OVER В чем проблема-то?
__________________
...вселенская грусть |
|
|||||
|
gloomyBrain, проблема будет в том, что событие MOUSE_OUT будет срабатывать когда не надо (из-за обилия элементов). например при наведении на меню слева
__________________
я могу стать всем, если только захочу |
|
|||||
|
судя по скрину никакого обилия объектов нет
Есть корневой скролл - его нужно отписать при наведении на дочерний и подписать при выходе из дочернего скролла При этом события наведения/выхода нужно отслеживать только для двух объектов - родителя и ребенка когда это самое "когда не надо"?
__________________
...вселенская грусть |
![]() |
![]() |
Часовой пояс GMT +4, время: 20:58. |
|
|
« Предыдущая тема | Следующая тема » |
|
|