AS3 Стоп Перетаскивание всех предметов - PullRequest
0 голосов
/ 26 февраля 2012

У меня есть функция, которая распознает нажатие клавиши 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 голосов
/ 26 февраля 2012

Создайте глобальный массив всех ваших перетаскиваемых объектов 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 из любого другого места.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...