AS3 拖放

AS3 Drag and Drop

我想通过拖放进行配对。应该有三个项目在舞台上相应的其他三个项目上移动。但是我可以预测添加子项会动态更改所有索引 (z/depth/whatever)。因此,当 'accidentally' 有人将鼠标悬停在匹配的对上时,鼠标将悬停在项目上方,但拖动一个站在后面。到时候'dropping'可能会毁了程序

有什么办法可以避免这种情况吗?任何帮助将不胜感激。

首先要设置拖动对象:

Sprite(draggingObject.parent).setChildIndex(draggingObject, Sprite(draggingObject.parent).numChildren - 1);

您还需要在阶段值处收听 MOUSE_UP 事件。

工作示例:

import flash.display.Sprite;
import flash.events.MouseEvent;

var container:Sprite = new Sprite();
var dragged:Sprite;
addChild(container);
var card:Sprite;
for (var j:uint = 0; j < 10; j++) {
    card = new Sprite();
    container.addChild(card);
    card.buttonMode = true;
    card.graphics.beginFill(0x000000);
    card.graphics.drawRect(0,0,30,30);
    card.x = j*40;
    card.addEventListener(MouseEvent.MOUSE_DOWN, stardDragListener);
}
stage.addEventListener(MouseEvent.MOUSE_UP, stopDragEvent);
function stardDragListener(e:MouseEvent):void {
    dragged = Sprite(e.currentTarget);
    Sprite(dragged.parent).setChildIndex(dragged, Sprite(dragged.parent).numChildren - 1)
    dragged.startDrag();
}
function stopDragEvent(e:MouseEvent):void {
    if (dragged) dragged.stopDrag();
}