动作脚本3,如何禁用密钥?

时间:2018-03-29 00:14:20

标签: actionscript-3

如果函数太多,那么每个“removeEventListener”都很难, 有没有办法暂时禁用所有密钥?

谢谢。

2 个答案:

答案 0 :(得分:0)

  

"有没有办法暂时禁用所有密钥?"

你能不能只使用.removeEventListener(KeyboardEvent.KEY_DOWN...

您的Stage或某些MovieClip正在收听关键新闻事件,对吗?例如:

stage.addEventListener(KeyboardEvent.KEY_DOWN, handle_KeyPress);

您的handle_KeyPress功能,其中处理所有按键,如下所示:

function handle_KeyPress ( evt:KeyboardEvent ) : void
{ 
    //# RIGHT ARROW or numpad 6 (arrow)
    if ( evt.keyCode == 39 || evt.keyCode == 54 || evt.keyCode == 102) 
    { 
        //do something if Right arrow
    } 

    //# SPACE BAR
    if ( evt.keyCode == 32)
    { 
        //do something if Space bar
    } 

}

PS:
"太多函数" 显示一个代码示例(例如:给出一个小例子,它们如何展开它)。如果您的代码目前不灵活,您可能需要重新思考/重新构建代码。

答案 1 :(得分:0)

如果您的目标只是暂时停止"事件处理程序,你可以抛出一个简单的布尔值:

var eventsHandled:Boolean = true;

在事件处理函数中,您可以将其用作条件:

function buttonClicked(evt:KeyboardEvent):void{
    if(eventsHandled){
      //do stuff

这只是一个简单的绷带。 VC.One的答案可能暗示你的实际问题,在某些时候你不得不面对它。