2013-04-23 41 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),只需模擬前面的代碼即可。