2

我有一个 flash cs3 文件,当用户在导航区域上滚动时,我希望掩码在 y 轴(上下)上移动。

在我的代码中,我有:

maskMC.startdrag();

如何限制蒙版移动的区域,然后在用户离开特定区域(在本例中为导航)时使其返回到原始位置。

4

2 回答 2

2

1)限制蒙版拖动到Y轴:

只需使用 startDrag 的第二个参数 (bounds:Rectangle)。

// startDrag method details
startDrag(lockCenter:Boolean = false, bounds:Rectangle = null):void

给它一个 Rectangle 它应该用作它的边界。可以在Adob​​e 的 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”)。

于 2009-11-10T05:14:25.917 回答
0

要使用拖动的边界,请使用以下(记住import flash.geom.Rectangle;

startDrag(lockCenter, new Rectangle(leftCornerx, leftCornery, width, height))

如果您希望它在移出菜单对象时移回,那么您想使用MouseEvent.ROLL_OUTMouseEvent.MOUSE_MOVE事件侦听器和测试stage.mouseX/ stage.mouseY,或运行 hitTest。取决于你如何在舞台上设置它。

于 2009-11-10T07:20:03.043 回答