我有一个flash cs3文件,当用户在导航区域上滚动时,我想让一个遮罩在y轴(向上和向下)上移动。
在我的代码中,我有:
maskMC.startdrag();
如何限制遮罩移动的区域,然后当用户离开特定区域(在本例中为导航)时将其恢复到原始位置。
答案 0 :(得分:2)
1)将遮罩拖动限制为Y轴:
只需使用startDrag的第二个参数(bounds:Rectangle)。
// startDrag method details
startDrag(lockCenter:Boolean = false, bounds:Rectangle = null):void
给它一个Rectangle,它应该用作它的边界。可以在Adobe's livedocs找到详细信息和示例。例如,要将拖动锁定到仅Y轴,您应该使Rectangle的宽度等于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”)。
答案 1 :(得分:0)
使用拖动的边界,使用以下(记住import flash.geom.Rectangle;
)
startDrag(lockCenter, new Rectangle(leftCornerx, leftCornery, width, height))
如果您希望它移出菜单对象,那么您希望使用MouseEvent.ROLL_OUT
或MouseEvent.MOUSE_MOVE
事件监听器并测试stage.mouseX
/ stage.mouseY
,或运行hitTest。取决于你如何在舞台上设置它。