Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   скроллинг. как реализовать? (http://www.flasher.ru/forum/showthread.php?t=113705)

Felicast 06.07.2008 19:25

скроллинг. как реализовать?
 
нужно организовать класс скролла. (при движении одного мувика (scroller), второй(mainHold) двигался в другом направлении)
не знаю на какой Event повесить изменение координат скроллируемого(mainHolder) мувика. пока вешаю на MOUSE_MOVE, но когда мышь находится не над скроллом(scroller), это событие не срабатывает :(
вот код:
Код:

public class Scrolling extends MovieClip
{
        private var mainHold:MainHold;
        private var mDown:Boolean;
        public function Scrolling()
        {
                mDown = false;
                mainHold = (parent.getChildByName("mainHold") as MainHold);
                scroller.addEventListener(MouseEvent.MOUSE_DOWN, scrollerMouseDownHandler);
                scroller.addEventListener(MouseEvent.MOUSE_UP, scrollerMouseUpHandler);
                scroller.addEventListener(MouseEvent.MOUSE_MOVE, scrollerMouseMoveHandler);
        }
        private function scrollerMouseDownHandler(event:MouseEvent):void
        {
                mDown = true;
                scroller.startDrag(false, new Rectangle(scroller.x, 0, 0, 550 - scroller.height));
        }
        private function scrollerMouseMoveHandler(event:MouseEvent):void
        {
                if (mDown)
                {
                        mainHold.y = -(scroller.y * mainHold.height) / this.height;
                }
        }
        public function scrollerMouseUpHandler(event:MouseEvent):void
        {
                mDown = false;
                scroller.stopDrag();
        }
}

если есть более разумная идея, с удовольствием выслушаю

__ant 06.07.2008 20:19

Изменяй координаты mainHold по событию enterFrame

Код:

scroller.startDrag(false, new Rectangle(scroller.x, 0, 0, 550 - scroller.height));
scroller.addEventListener(Event.ENTER_FRAME, frameHandler);

...

scroller.stopDrag();
scroller.removeEventListener(Event.ENTER_FRAME, frameHandler);

...

private function frameHandler(e:Event):void {
    mainHold.y = -(scroller.y * mainHold.height) / this.height;

}


Felicast 07.07.2008 12:49

спасибо. я, собственно, так и сделал

inozemcev 12.03.2010 19:49

по - моему не учитываются случаи когда мышь покидает зону захвата, возвращается в нее и т п.

Alex Lexcuk 12.03.2010 20:45

Посмотрите на горизонтальный слайдер (делал давно) и можно вертикальный поставить и скинить можно мувиком.
http://murmadillo.tut.su/m/sv-gor-sl.zip


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

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