我有两个MovieClip(可拖动和targetm)。我想要我的ActionScript,以便我可以拖动targetm,如果我将targetm放在dragable中,那么它仍然可以拖动,否则它将重置为其原始位置。这是我的ActionScript:
dragable.addEventListener(MouseEvent.MOUSE_DOWN, pickup);
dragable.addEventListener(MouseEvent.MOUSE_UP, place);
var startingLocation = new Point();
function pickup(evt:MouseEvent) {
startingLocation.x = evt.target.x;
startingLocation.y = evt.target.y;
evt.target.startDrag();
}
function place(evt:MouseEvent) {
if (evt.target.dropTarget == targetm) {
trace('here');
evt.target.stopDrag();
} else {
evt.target.stopDrag();
evt.target.x = startingLocation.x;
evt.target.y = startingLocation.y;
}
}
但即使我在targetm上拖放可拖动,它也不会跟踪任何内容。它转到else语句并重置可拖动的位置。为什么即使我将dragabale放在targetm之上也没有追踪任何东西?
注意:如果我这样做
trace(evt.target.dropTarget);
跟踪
[object Shape]
如果我可以在targetm上拖放。
答案 0 :(得分:1)
当你丢弃目标中的整个可拖动?如果没有,则鼠标光标必须超过目标才能获得跟踪。
答案 1 :(得分:0)
evt.target.dropTarget;
@Craig 返回的显示列表中的其他内容也正确,鼠标光标必须位于显示对象上。既然可能会或可能不是这样,并且将来你可能会或者可能不会有任何东西,我会建议你根据位置来做这件事。为此,我建议使用getBounds,因此dropTarget
和targetm
的两个坐标系都位于相同的坐标空间中:
function place(evt:MouseEvent):void {
var targetBounds:Rectangle = evt.target.getBounds( stage );
var targetmBounds:Rectangle = targetm.getBounds( stage );
if (targetBounds.intersects(targetmBounds)) {
trace('here');
evt.target.stopDrag();
} else {
evt.target.stopDrag();
evt.target.x = startingLocation.x;
evt.target.y = startingLocation.y;
}
}