Actionscript 3 AS3中键组合的EventListener?

Actionscript 3 AS3中键组合的EventListener?,actionscript-3,flash,animation,actionscript,Actionscript 3,Flash,Animation,Actionscript,我试图找出退出flash独立应用程序的条件和“快捷方式”。我想按两个键,这两个键的组合“C+M”应该退出我的应用程序。 这是我的密码,但仍然不起作用。我尝试让舒尔应用程序允许我同时按下多个按钮,然后我创建了退出功能。 任何答案都很好 var-keyPressedC:Boolean; var-keyPressedM:布尔型; addEventListener(KeyboardEvent.KEY_DOWN,check_KEY_DOWN,false,0,true); addEventListener

我试图找出退出flash独立应用程序的条件和“快捷方式”。我想按两个键,这两个键的组合“C+M”应该退出我的应用程序。 这是我的密码,但仍然不起作用。我尝试让舒尔应用程序允许我同时按下多个按钮,然后我创建了退出功能。 任何答案都很好

var-keyPressedC:Boolean;
var-keyPressedM:布尔型;
addEventListener(KeyboardEvent.KEY_DOWN,check_KEY_DOWN,false,0,true);
addEventListener(KeyboardEvent.KEY\u UP,check\u KEY\u UP,false,0,true);
addEventListener(Event.ENTER_FRAME,check_keys,false,0,true);
功能检查键(事件:事件):无效
{
如果(按键C)
跟踪(“C”)
如果(按键EDM)
跟踪(“推送M”)
}
功能检查键按下(事件:键盘事件):无效
{
如果(event.keyCode==67)
keyPressedC=true;
如果(event.keyCode==77)
按键EDM=真;
}
功能检查按键(事件:键盘事件):无效
{
如果(event.keyCode==67)
keyPressedC=false;
如果(event.keyCode==77)
按键EDM=假;
}
导入flash.system.fscommand;
stage.addEventListener(KeyboardEvent.KEY_向下,输入KeyHandlerCM);
函数enterKeyHandlercm(事件:KeyboardEvent):无效
{
if(event.keyCode==Keyboard.C&&event.keyCode==Keyboard.M)
{
fscommand(“退出”);
}

}
enterKeyHandlercm
块中,您的逻辑应该是计算按键按下的值,而不是按键代码值

function enterKeyHandlercm(event:KeyboardEvent):void 
{
    if (keyPressedM == true && keyPressedC == true)
    {
        fscommand("quit");
    }
}
有了这段代码,您的5个关键可能性(c向上、c向下、m向上、m向下、c+m向下)中的每一个都会添加一个不同的MC


请原谅我的长篇大论,但这样我们就不会遗漏任何东西。我添加ball构造函数的原因是因为我只有笔记本电脑,所以我必须使用在线IDE,我不知道如何找到输出窗口或运行调试器,而且它不接受系统命令。但我可以用ball方法确认的是,当“c”和“m”被按下时,一个唯一的MC被实例化。这意味着,当同时按下两个键时,我们的代码现在会使flash注册一个唯一的事件

什么不起作用?您是否收到错误?没有错误,但首先,我没有收到任何跟踪输出“推送C”或“M”,其次,C+M组合没有退出应用程序。这应该可以解决您的问题,但为了进一步说明它不工作的原因,
event.KeyCode
只有一个值,因此,它永远不会同时等于
Keyboard.M
Keyboard.C
“如果
,则单个语句
不需要大括号。”s@BadFeelingAboutThis谢谢将我的答案编辑回原稿。我必须开始实现它,这样我才能像个老板一样编码!那么,有没有其他方法可以通过按C+M按钮从Flash重新启动exe文件呢?例如,我可以重新配置随机键,这样文件会认为我按下了ctrl+q键吗?这里已经有了很好的讨论。
package {
    import flash.display.*;
    import flash.events.*;
    import flash.system.fscommand;
    import flash.system.System; //add this if you try System.exit(0);

    public class FlashTest extends MovieClip 
    {

        public function FlashTest() 
        {
            var keyPressedC:Boolean;  
            var keyPressedM:Boolean;       

            // need to add eventListener to stage
            // default values work fine.  
            stage.addEventListener(KeyboardEvent.KEY_DOWN, check_key_down);
            stage.addEventListener(KeyboardEvent.KEY_UP, check_key_up);
            stage.addEventListener(Event.ENTER_FRAME, check_keys);

            function check_key_down(event:KeyboardEvent):void
            {
                if(event.keyCode == 67)
                {
                    keyPressedC = true;
                    newBall(-100);
                }
                if(event.keyCode == 77)
                {
                    keyPressedM = true;
                    newBall();
                }
             }

             function check_key_up(event:KeyboardEvent):void
             {
                 if(event.keyCode == 67)
                 {
                     keyPressedC = false;
                     newBall(-50);
                 }
                 if(event.keyCode == 77)
                 {
                     keyPressedM = false;
                     newBall(50);
                 }
             }

             function enterKeyHandlercm(event:KeyboardEvent):void 
             {
                 if (keyPressedM == true && keyPressedC == true)
                 {
                     newBall(100); 
                     fscommand("quit");
                     // or try System.exit(0);
                 }
              }


              function newBall(x:Number=0):void
              {
                      var ball:Sprite = new Sprite();
                      ball.graphics.lineStyle();
                      ball.graphics.beginFill(0x000000);
                      ball.graphics.drawCircle(0,0,20);
                      ball.graphics.endFill();
                      addChild(ball);
                      ball.x = stage.stageWidth/2+x;
                      ball.y = stage.stageHeight/2;
              }      
          }
      }
  }