我有一个 flash cs3 文件,当用户在导航区域上滚动时,我希望掩码在 y 轴(上下)上移动。
在我的代码中,我有:
maskMC.startdrag();
如何限制蒙版移动的区域,然后在用户离开特定区域(在本例中为导航)时使其返回到原始位置。
我有一个 flash cs3 文件,当用户在导航区域上滚动时,我希望掩码在 y 轴(上下)上移动。
在我的代码中,我有:
maskMC.startdrag();
如何限制蒙版移动的区域,然后在用户离开特定区域(在本例中为导航)时使其返回到原始位置。
1)限制蒙版拖动到Y轴:
只需使用 startDrag 的第二个参数 (bounds:Rectangle)。
// startDrag method details
startDrag(lockCenter:Boolean = false, bounds:Rectangle = null):void
给它一个 Rectangle 它应该用作它的边界。可以在Adobe 的 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”)。
要使用拖动的边界,请使用以下(记住import flash.geom.Rectangle;
)
startDrag(lockCenter, new Rectangle(leftCornerx, leftCornery, width, height))
如果您希望它在移出菜单对象时移回,那么您想使用MouseEvent.ROLL_OUT
或MouseEvent.MOUSE_MOVE
事件侦听器和测试stage.mouseX
/ stage.mouseY
,或运行 hitTest。取决于你如何在舞台上设置它。