AS3停止拖动所有项目
我有一个识别被按下的ESC键的功能。在这一点上,我想停止拖动所有项目。AS3停止拖动所有项目
我“试过this.stopDrag(),但它不会覆盖MOUSE_DOWN事件。
它有没有办法迫使它‘降’的项目被拖动?
感谢
stage.addEventListener(KeyboardEvent.KEY_DOWN, escapeKeyDown);
function escapeKeyDown(event : KeyboardEvent):void {
if (event.keyCode == 27) {
trace("ESC");
this.stopDrag();
}
}
让你的所有拖动的DisplayObject全局数组:
static var CURRENT_DRAGGING_ITEMS:Array = [];
然后,每当你CA将开始拖动任何东西,将其添加到数组中。
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时,还要从数组中删除拖动项。
感谢亚当,我试过了event.target.stopDrag();但出现以下错误:错误#1069:在flash.display.Stage上找不到属性startDrag,并且没有默认值。 \t at flightCellMaker_fla :: MainTimeline/escapeKeyDown() – user1203605 2012-02-26 03:32:09
Just tried stopDrag();在它自己和这做了伎俩。谢谢你的帮助! – user1203605 2012-02-26 03:36:39
“所有项目” - 因为该事件侦听器只触发一次,所以您只能在一个项目上调用'stopDrag()'(不管this是什么)。 – Cameron 2012-02-25 22:01:40