2010-10-06 38 views
0

這裏是一個工作腳本拖動從階段掉落到另一個目標MC拖放AS3:如何拖動孩子MC出父MC,並添加到新的父MC

ball.addEventListener(MouseEvent.MOUSE_DOWN, pickUp); 
stage.addEventListener(MouseEvent.MOUSE_UP, dropIt);  
function pickUp(event:MouseEvent):void{ 
    var ballPoint:Point = ball.parent.localToGlobal(new Point(ball.x, ball.y)); 
    ball.parent.removeChild(ball); 
    addChild(ball); 
    ball.x = ballPoint.x; 
    ball.y = ballPoint.y; 
    ball.startDrag(); 
}  
function dropIt(event:MouseEvent):void{ 
    ball.stopDrag(); 
    if(!event.target.dropTarget) { return };  
    var dropT:MovieClip = event.target.dropTarget.parent; 
    var ballPoint:Point = dropT.globalToLocal(new Point(ball.x, ball.y));  
    ball.parent.removeChild(ball); 
    dropT.addChild(ball); 
    ball.x = ballPoint.x; 
    ball.y = ballPoint.y; 
} 

它運作良好,但我是新來的AS3,我很難修改這個腳本把球拖出父母mc(而不是舞臺),併到另一個MC(目標MC)。要解釋:想象一個球,一個盒子,一個三,更多的形狀全部在一個滾動的MC(初始父母)中,用戶滾動選擇一個形狀,然後拖放到舞臺上的目標MC上。

滾動是沒有問題的,但是如何修改上面的腳本以便球可以在父MC中開始而不是在舞臺上?

歡迎任何建議。

回答

0

我拿出行之有效的解決方案。 一路走來,我還解決了嚴格模式和鑄造的常見問題(請參閱下面的代碼中的第5行& 16)。

scroller.ball.addEventListener(MouseEvent.MOUSE_DOWN, pickUp); 
scroller.ball.addEventListener(MouseEvent.MOUSE_UP, dropIt); 
function pickUp(event:MouseEvent):void 
{ 
    var dragIt:MovieClip = MovieClip(event.target); 
    var dragPoint:Point = dragIt.parent.localToGlobal(new Point(dragIt.x, dragIt.y)); 
    dragIt.parent.removeChild(dragIt); 
    stage.addChild(dragIt); 
    dragIt.x = dragPoint.x; 
    dragIt.y = dragPoint.y; 
    dragIt.startDrag(); 
} 
function dropIt(event:MouseEvent):void 
{ 
    stopDrag(); 
    var dragIt:MovieClip = MovieClip(event.target); 
    if(!dragIt.dropTarget) { 
     trace("you missed"); 
     return ; 
    }; 
    var dropT:MovieClip = event.target.dropTarget.parent; 
    var dropPoint:Point = dropT.globalToLocal(new Point(dragIt.x, dragIt.y)); 
    dragIt.parent.removeChild(dragIt); 
    dropT.addChild(dragIt); 
    dragIt.x = dropPoint.x; 
    dragIt.y = dropPoint.y; 
} 
0

幾件事情。你不需要做一個ball.parent.remove(ball)調用 - 下一個addChild(ball)會自動將MC從任何地方移除。

在pickUp()調用中,執行this.stage.addChild(ball),將球放入其他所有物體的頂部。

然後在dropIt()調用,做任何一個MC想要把球放進一個的addChild(球)...

+0

感謝您的幫助,我已經跟您的建議嘗試,但沒有這些想法直接解決我的它涉及拖動球*總分父MC *,而不是實際的問題* *在舞臺上本身。 – 2010-10-07 23:14:17