AS3拖放

时间:2015-03-12 09:34:32

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

我想通过拖放进行配对。有三个项目应该在舞台上相应的其他三个项目上移动。但是我可以预测添加子项动态地改变所有索引(z /深度/无论如何)。因此,当意外地'有人在一对配对上盘旋,鼠标将在项目上方,但拖后一个站在后面。当时'放弃'可能会破坏该计划。

有没有办法避免这种情况?任何帮助都将非常感谢。

1 个答案:

答案 0 :(得分:1)

您应该首先设置拖动对象:

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