2010-10-06 66 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

相关问题