AS3停止拖动所有项目

时间:2012-02-25 21:23:07

标签: actionscript-3

我有一个识别按下ESC键的功能。此时,我想停止拖动所有项目。

我已尝试过this.stopDrag()但它不会覆盖MOUSE_DOWN事件。

有没有办法强制它“拖放”被拖动的项目?

由于

stage.addEventListener(KeyboardEvent.KEY_DOWN, escapeKeyDown);

function escapeKeyDown(event : KeyboardEvent):void {
if (event.keyCode == 27) {
    trace("ESC");
    this.stopDrag();
}
}

1 个答案:

答案 0 :(得分:0)

创建所有拖动DisplayObject的全局数组:

static var CURRENT_DRAGGING_ITEMS:Array = [];

然后每当你在任何事情上调用startDrag时,将它添加到数组中。

function onMouseDown(event:MouseEvent):void 
{
    event.target.startDrag();
    CURRENT_DRAGGING_ITEMS.push(event.target);
}

然后当你按下ESC时,只需遍历数组,在所有项目上调用stopDrag,然后从数组中删除它们。

function escapeKeyDown(event:KeyboardEvent):void 
{
    event.target.stopDrag();
    var targetIndex:uint = CURRENT_DRAGGING_ITEMS.indexOf(event.target);
    CURRENT_DRAGGING_ITEMS.splice(targetIndex, 1);
}

当您从其他任何地方调用stopDrag时,请确保从阵列中删除拖动项。