PDA

Просмотр полной версии : Вопрос про самодельный скролер


Fairy Wilbury
20.01.2011, 00:31
Подскажите, пожалуйста, как решить такую задачу:

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

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;
}


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

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

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
Пишите код в кадрах. Иначе запутаетесь.


скроллбар.бегунок.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
Спасибо, попробую = )