[英]Drag-drop AS3: how to drag child mc out of parent mc and add to new parent 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内而不是舞台上开始?
任何建议欢迎。
几件事。 您不需要进行ball.parent.remove(ball)调用-下一个addChild(ball)会自动将MC从任何位置删除。
在pickUp()调用中,执行this.stage.addChild(ball),以将球放入(放在其他所有物体的顶部)。
然后在dropIt()调用中,对要放入球的MC进行addChild(ball)。
我想出了一个行之有效的解决方案。 一路上,我还解决了使用严格模式和强制转换的常见问题(请参见下面的代码中的第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;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.