Actionscript 3中的双拖动功能
问题描述:
我有两个动画片段,一个动画片段拖动垂直,另一个拖动水平。 如果我滑动水平动画片段,我希望垂直动画片段拖动垂直(如菜单)。我已经通过在一个拖动功能中放置了两个拖动功能来尝试这种方式,但它不起作用。任何人都可以帮我吗?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();
}
它只会拖动水平,但菜单不会拖动。 (缩略图在菜单中,脚本在它之外)
答
你应该重写一个拖动功能,这并不是很痛苦。 我真的不明白你的符号,让我们假设我们有两个片段:
var verticalClip:Sprite = new Sprite();
var horizontalClip:Sprite = new Sprite();
你要当第二个是horizontaly拖到第一个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时移动horizontalClip),只需模拟前面的代码即可。
您是否尝试移动另一个被拖动时未被拖动的MovieClip? – David 2013-04-23 19:01:35
startdrag函数在哪里? – Enigmadan 2013-04-23 19:09:08
@Enigmadan,它在Sprite上是原生的;) – Kodiak 2013-04-24 15:05:09