zoukankan      html  css  js  c++  java
  • 简单的按键管理类,使ctrl+enter快捷键起作用

    经过测试,ctrl键和enter键组合的话,在flash player里是没有效果的,按下了 ctrl时,再按enter键,就监听不到enter键的按下。但是用IE打开可以(测试时用的IE8).

    写了个简单的按键管理类:

    private var isctrlDown:Boolean = false;
    	//--------------------------------------------------------------------------
    	//		Public Methods
    	//--------------------------------------------------------------------------
    	
    	//--------------------------------------------------------------------------
    	//		Event Handler
    	//--------------------------------------------------------------------------
    	private function onKeyUpHandler(event:KeyboardEvent):void
    	{
    		if(event.keyCode == Keyboard.CONTROL)
    		{
    			isctrlDown = false;
    //			trace("控制键弹起");
    		}
    	}
    	private function onKeyDownHandler(event:KeyboardEvent):void
    	{
    		if(event.keyCode == Keyboard.CONTROL)
    		{
    			isctrlDown = true;
    //			trace("控制键按下");
    			return;
    		}
    //		trace(event.keyCode)
    		if(event.keyCode == 13)
    		{
    //			trace("ENTER按下");
    			if(isctrlDown == true)
    			{
    //				trace("ENTER按下并且ctrl按下");
                                    isctrlDown = false;
    				dispatchEvent(new PrivateChatEvent(PrivateChatEvent.CTRL_ENTER_SEND_MSG));
    			}
    		}
    	}
    	//--------------------------------------------------------------------------
    	//		Protected
    	//--------------------------------------------------------------------------
    	
    	//--------------------------------------------------------------------------
    	//		Privates
    	//--------------------------------------------------------------------------
    	private function init():void
    	{
    		listenKeyBoardEvent();
    	}
    	
    	private function listenKeyBoardEvent():void
    	{
    		Application.application.stage.addEventListener(KeyboardEvent.KEY_DOWN,onKeyDownHandler);
    		Application.application.stage.addEventListener(KeyboardEvent.KEY_UP,onKeyUpHandler);
    	}
    	//--------------------------------------------------------------------------
    	//		Dispose
    	//--------------------------------------------------------------------------
    	public function destroy():void
    	{
    		Application.application.stage.removeEventListener(KeyboardEvent.KEY_DOWN,onKeyDownHandler);
    		Application.application.stage.removeEventListener(KeyboardEvent.KEY_UP,onKeyUpHandler);
    	}
    

    FLex项目中若用TextArea做为聊天内容输入框,在用ctrl+enter键发送了聊天信息后的那一刹那,光标可能会向下换一行,并且输入框可能会随之出现文本残留,一个解决办法就是做个延时,TextArea.editable=false,让TextArea在延时到了才能再被输入文本,TextArea.editable = true ,延时长度为 50毫秒感觉还不错,在延时到了时先

    让TextArea.text = "",可以解决文本发送出去后的残留问题。

  • 相关阅读:
    AutoCompleteTextView 和 TextWatcher 详解
    Activity 切换 动画
    ViewPager -- Fragment 切换卡顿 性能优化
    java Timer 使用小结
    Android_使用getIdentifier()获取资源Id
    Android_实现静默安装和卸载应用
    Android Studio导入第三方类库的方法
    BaseAdapter导致notifyDataSetChanged()无效的三个原因及处理方法
    NoSQL选型
    表设计
  • 原文地址:https://www.cnblogs.com/JD85/p/1957757.html
Copyright © 2011-2022 走看看