2013-04-23 23 views
0

我有两个动画片段,一个动画片段拖动垂直,另一个拖动水平。 如果我滑动水平动画片段,我希望垂直动画片段拖动垂直(如菜单)。我已经通过在一个拖动功能中放置了两个拖动功能来尝试这种方式,但它不起作用。任何人都可以帮我吗?Actionscript 3中的双拖动功能

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(); 
} 

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

+0

您是否尝试移动另一个被拖动时未被拖动的MovieClip? – David 2013-04-23 19:01:35

+0

startdrag函数在哪里? – Enigmadan 2013-04-23 19:09:08

+1

@Enigmadan,它在Sprite上是原生的;) – Kodiak 2013-04-24 15:05:09

回答

1

你应该重写一个拖动功能,这并不是很痛苦。 我真的不明白你的符号,让我们假设我们有两个片段:

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

你要当第二个是horizo​​ntaly拖到第一个verticaly移动。

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),只需模拟前面的代码即可。