Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 1.0/2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=93)
-   -   Вопрос про самодельный скролер (http://www.flasher.ru/forum/showthread.php?t=149148)

Fairy Wilbury 20.01.2011 00:31

Вопрос про самодельный скролер
 
Подскажите, пожалуйста, как решить такую задачу:

Есть сделанный во флеше скроллер. Он работает в таком варианте: зажимаешь кнопку мыши, тянешь ползунок вниз, отпускаешь после этого меню поднимается вверх (изменяются координаты по y).

Код AS1/AS2:

onClipEvent (load) 
{
}
 
onClipEvent (mouseDown)
{
        stPoint = this._y;
        if (this.hitTest(_root._xmouse, _root._ymouse, 1))
        {
                this.startDrag(this, false, 430, 0, 75, -51);
        }
}
 
onClipEvent (mouseUp)
{
        this.stopDrag();
        fnPoint = this._y;
        speed = fnPoint - stPoint;
        newPos = _root.lmenu_mc._y;
        newPos = (newPos + (speed * (-2)));
        trace(speed);
        trace(newPos);
        _root.lmenu_mc._y = newPos;
}


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

Пока что получилось вот так:

Код AS1/AS2:

onClipEvent (load) 
{
}
 
onClipEvent (mouseMove)
{
        stPoint = this._y;
 
        if (this.hitTest(_root._xmouse, _root._ymouse, true))
        {
                this.startDrag(this, false, 430, 0, 75, 0);
                fnPoint = _root._ymouse;
                trace(fnPoint);
                speed = fnPoint - stPoint;
                newPos = _root.lmenu_mc._y;
                newPos = (newPos + (speed * (-2)));
                _root.lmenu_mc._y = newPos;
        }
        else
        {
                this.stopDrag();
        }
}

Собственно, две проблемы:
1. Как можно одновременно прописать проверку двух условий при onClipEvent (mouseMove) - hitTest и mouseDown? Просто добавлением через & в if не получилось. А так получается, что ползунок бегает за мышкой без нажатия кнопки.
2. При перетягивании ползунка вниз все работает, при перетягивании вверх не срабатывает условие hitTest. Как можно побороть эту проблему?
Заранее спасибо.

Hauts 20.01.2011 08:51

Пишите код в кадрах. Иначе запутаетесь.

Код AS1/AS2:

скроллбар.бегунок.onPress = function() {
        this.pressed = true;
        this.offsetY = this._ymouse;
};
скроллбар.бегунок.onMouseUp = function() {
        this.pressed = false;
};
скроллбар.onMouseMove = function() {
        if (this.бегунок.pressed) {
                this.бегунок._y = this._ymouse-this.бегунок.offsetY;
                // Далее крутим контент и ограничиваем перемещение бегунка
        }
};


Fairy Wilbury 21.01.2011 04:20

Спасибо, попробую = )


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

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