Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   Flex (http://www.flasher.ru/forum/forumdisplay.php?f=84)
-   -   Функционал Контекстного Скроллинга (http://www.flasher.ru/forum/showthread.php?t=146744)

Ivanaka 16.11.2010 23:04

Функционал Контекстного Скроллинга
 
Здравствуйте!
Нужен функционал широко распространенный во многих других системах, то есть:
Есть Scroller, а в нем группа с объектами. Подтаскиваем любой объект к верхней или нижней границе скроллера, в ответ на это, скроллер должен прокручиваться, показывая невидимые до этого объекты в группе.
Есть идея, что нужно на верхнем и нижнем крае скроллера поставить прозрачные объекты при наведении на которые и будет выполняться скроллинг. Но, может быть, есть какие то другие реализации и идеи?

GBee 17.11.2010 09:51

Может DragOver с координатами мыши?

alatar 17.11.2010 10:57

Тут всего два варианта, либо, как уже было сказано, слушать DRAG_OVER, либо при DRAG_START подписываться на MOUSE_MOVE. В обоих случаях при приближении курсора к границам компонента добавлять слушателя на ENTER_FRAME (ну или эффект применять) и потихоньку скроллить. При наступлении DRAG_EXIT (или MOUSE_OUT), DRAG_DROP отрубать ENTER_FRAME.

Silicium 17.11.2010 14:08

А какой эффект юзать? К скроллингу эффекты не лепятся, на сколько я смог убедиться.
Так что только ENTER_FRAME

alatar 17.11.2010 14:19

Для mx есть AnimateProperty, для spark он называется просто Animate. Не заморачивайтесь, тут не тот случай где нужна анимация с easer'ом, просто крутите по ENTER_FRAME.

Ivanaka 17.11.2010 16:41

Цитата:

Может DragOver с координатами мыши?
Скроллер резиновый, т.е. фиксированные значения тут сложно прикрутить.

Цитата:

...при приближении курсора к границам компонента...
А вот как эти границы распознать?

alatar 17.11.2010 16:49

Цитата:

Скроллер резиновый, т.е. фиксированные значения тут сложно прикрутить.
Никто, не упоминал фиксированные значения.
Цитата:

А вот как эти границы распознать?
Что значит как? Проверить ширину и высоту.

Ivanaka 18.11.2010 01:55

Всем спасибо за комментарии, все сделал вот так:
Код AS3:

//повесил слушателя DragManager.doDrag:
 myScroller.addEventListener(Event.ENTER_FRAME, scrollAuto);
//--------------
private function scrollAuto(evt:Event):void{
        var sh:int = myScroller.height-56;
        if(myScroller.mouseY <= 56){myGroup.verticalScrollPosition -=15}
        if(myScroller.mouseY >= sh){myGroup.verticalScrollPosition +=15}
}
//--------------
//снимаем слушателя на drag Exit
myScroller.removeEventListener(Event.ENTER_FRAME, scrollAuto);



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

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