0

我有两个影片剪辑,一个影片剪辑垂直拖动,另一个拖动水平。如果我滑动水平动画剪辑,我希望垂直动画剪辑也垂直拖动(如菜单)。我已经通过将两个拖动功能放在一个拖动功能中来尝试过这个,但它没有用。谁能帮帮我?

menu0.bar1.thumbnail1.addEventListener(MouseEvent.MOUSE_DOWN, startdrag1)
stage.addEventListener(MouseEvent.MOUSE_UP, stopdrag1)

function startdrag1 (e:MouseEvent)
{
    menu0.addEventListener(MouseEvent.MOUSE_DOWN, startdrag)
    menu0.removeEventListener(MouseEvent.MOUSE_DOWN, startdrag)

    //Horizontal dragging menu
    menu0.bar1.thumbnail1.startDrag(false, new Rectangle(0,125,-1380,0));

    //Vertical dragging menu
    menu0.startDrag(false,new Rectangle(0,93,0,-1125));

}
function stopdrag1 (e:MouseEvent)
{
    menu0.bar1.thumbnail1.stopDrag();
    menu0.addEventListener(MouseEvent.MOUSE_DOWN, startdrag)
    menu0.bar1.stopDrag();
}

它只会水平拖动,但菜单不会拖动。(缩略图在菜单中,脚本在它之外)

4

1 回答 1

1

你应该重写一个拖动功能,它并不是很痛苦。我不太明白你的符号,所以假设我们有两个剪辑:

var verticalClip:Sprite = new Sprite();
var horizontalClip:Sprite = new Sprite();

当第二个水平拖动时,您希望第一个垂直移动。

horizontalClip.addEventListener(MouseEvent.MOUSE_DOWN, hMouseDown);

private function hMouseDown(e:MouseEvent):void
{
    stage.addEventListener(MouseEvent.MOUSE_MOVE, hMouseMove);
    stage.addEventListener(MouseEvent.MOUSE_UP, stageMouseUp);
}

private function hMouseMove(e:MouseEvent):void
{
    horizontalClip.x = stage.mouseX;
    verticalClip.y = stage.mouseX; //you may want to add some limits and offsets here
}

private function stageMouseUp(e:MouseEvent):void
{
    stage.removeEventListener(MouseEvent.MOUSE_MOVE, hMouseMove);
}

如果您希望verticalClip 也可以拖动,您仍然可以使用startdrag。或者如果你需要一些更复杂的行为(比如在拖动verticalClip时移动horizo​​ntalClip),只需模仿前面的代码即可。

于 2013-04-24T15:04:32.680 回答