ActionScript 3 - 目标无法识别丢弃的位置

时间:2014-03-19 17:41:34

标签: actionscript-3 flash drag-and-drop

我有两个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上拖放。

2 个答案:

答案 0 :(得分:1)

当你丢弃目标中的整个可拖动?如果没有,则鼠标光标必须超过目标才能获得跟踪。

答案 1 :(得分:0)

evt.target.dropTarget; @Craig 返回的显示列表中的其他内容也正确,鼠标光标必须位于显示对象上。既然可能会或可能不是这样,并且将来你可能会或者可能不会有任何东西,我会建议你根据位置来做这件事。为此,我建议使用getBounds,因此dropTargettargetm的两个坐标系都位于相同的坐标空间中:

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;
    }
}