1) Ограничение перетаскивания маски по оси Y:
Просто используйте второй аргумент startDrag (bounds: Rectangle).
// startDrag method details
startDrag(lockCenter:Boolean = false, bounds:Rectangle = null):void
дайте ему прямоугольник, который он должен использовать в качестве своих границ. Подробности и примеры можно найти на Liveocs Adobe . Например, чтобы заблокировать перетаскивание только по оси Y, ширина прямоугольника должна быть равна 0.
var dragBounds:Rectangle = new Rectangle(startX, startY, 0, dragHeight);
myMask.startDrag(false, dragBounds);
2) Вернуть маску к исходному Y, по капле:
Самый простой способ - прослушать событие mouseup на сцене. когда это срабатывает, и вы перетаскиваете маску, установите маску y в исходное положение. Лично я бы использовал Tweener , чтобы отправить маску обратно, но вы можете сделать это как хотите (возможно, на enterFrame).
public function Main()
{
stage.addEventListener(MouseEvent.MOUSE_UP, mouseUpHandler);
}
private function mouseUpHandler(e:MouseEvent):void
{
if (draggingMask)
{
Tweener.addTween(myMask, { y:originalY, time:0.5, transition:"easeOutQuad" });
draggingMask = false;
}
}
Вам нужно будет установить draggingMask в true, когда вы начинаете перетаскивать маску, и в false, когда вы отпускаете ее. Вам также понадобится переменная для хранения исходного местоположения (я использовал «originalY» в моем примере выше).