我有一个识别按下ESC键的功能。此时,我想停止拖动所有项目。
我已尝试过this.stopDrag()但它不会覆盖MOUSE_DOWN事件。
有没有办法强制它“拖放”被拖动的项目?
由于
stage.addEventListener(KeyboardEvent.KEY_DOWN, escapeKeyDown);
function escapeKeyDown(event : KeyboardEvent):void {
if (event.keyCode == 27) {
trace("ESC");
this.stopDrag();
}
}
答案 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时,请确保从阵列中删除拖动项。