当我在键盘上触摸“z”(键码90)时单击2次,我的项目将被删除。
timer=new Timer(500, 1);
stageRef.addEventListener(KeyboardEvent.KEY_UP, removeDraggedItem);
private function removeDraggedItem(e:KeyboardEvent){
if(timer.running==true)
{
if(e.keyCode==90)
{
stageRef.removeEventListener(MouseEvent.MOUSE_MOVE, dragItem);
stageRef.removeEventListener(Event.ENTER_FRAME, itemHitTest);
draggedItem.removeEventListener(MouseEvent.MOUSE_DOWN, itemClick);
stageRef.removeChild(draggedItem);
toolbar.useText.text = "";
if (stageRef.contains(this))
stageRef.removeChild(this);
Mouse.show();
Engine.playerControl = true;
}
}
else if(e.keyCode==90)
{
timer.start();
}
}
我想改变它,当我们用鼠标点击2次时,项目被移除但我无法弄清楚如何做到这一点......如果mouseDown = true?它似乎没有工作......
编辑:
好的我已经尝试通过(e.buttonDown)更改(e.keyCode == 90)。当我双击时,没有错误,但没有发生任何想法?
答案 0 :(得分:0)
您的代码只是在监听KEY_UP
事件:stageRef.addEventListener(KeyboardEvent.KEY_UP, removeDraggedItem);
。您还应添加KEY_DOWN
事件,然后将KEY_DOWN
事件与KEY_UP
事件结合使用,以检查是否发生了双击。添加KEY_DOWN
事件的代码为stageRef.addEventListener(KeyboardEvent.KEY_DOWN, functionName);
。
另一方面,如果您尝试使用MouseEvent.DOUBLE_CLICK
,则必须为要双击的对象启用双击。哦,绝对包括flash.events.MouseEvent
object.doubleClickEnabled = true;
object.addEventListener(MouseEvent.DOUBLE_CLICK, functionName);
另外我注意到在你的removeDraggedItem
函数中,如果keycode等于90,你就会启动一个计时器。然后在下一次抛出KEY_UP
事件时,检查计时器是否正在运行,如果是,你将删除很多事件监听器和对象。你永远不会停止计时器或重置计时器或删除计时器,我只是想知道这是否是故意的?