flex TextArea使用的问题,求解答

ioryioryzhan 2008-07-19
想做的是一个 TextArea 接收用户输入,同时监听 KEY_DOWN 事件,当用户按 Ctrl+Enter时,TextArea 清空。代码是这样的:
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" 
	creationComplete="init()">
	<mx:Script>
	<![CDATA[
		
		internal function init():void{			
			textArea.addEventListener(KeyboardEvent.KEY_DOWN,onDown);
		}
		private function onDown(e:KeyboardEvent):void{
			if(e.ctrlKey && e.keyCode == 13){	
				trace("before empty");
				textArea.text = "";
				trace("after  empty");			
			}			
		}

	]]>
</mx:Script>
	<mx:TextArea id="textArea" x="176" y="64" width="442" height="171" 
		text="这是一个TextArea">
	</mx:TextArea>
</mx:Application>


trace 的输出都有,但是 textArea 却没有被清空,有人知道这是怎么回事吗?
ioryioryzhan 2008-07-19
最终功能还是实现了,不过方法很笨。哈哈:
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" creationComplete="init()">
<mx:Script>
	<![CDATA[
		private var isEnterDown:Boolean = false;
		private var isCtrlDown:Boolean = false;
		
		internal function init():void{
			textArea.addEventListener(KeyboardEvent.KEY_UP,onUp);
			textArea.addEventListener(KeyboardEvent.KEY_DOWN,onDown);
		}
		private function onDown(e:KeyboardEvent):void{
			if(e.ctrlKey){
				isCtrlDown = true;
			}
			if(e.keyCode==13){
				isEnterDown = true;
			}
		}		
		private function onUp(e:KeyboardEvent):void{
			if(e.keyCode==13){
				if(isCtrlDown){
					textArea.text = "";	
				}
				isEnterDown = false;
			}
			if(e.ctrlKey){
				if(isEnterDown){
					textArea.text = "";	
				}
				isCtrlDown = false;
			}
		}	
	]]>
</mx:Script>
	<mx:TextArea id="textArea" x="176" y="64" width="442" height="171" 
		text="这是一个TextArea">
	</mx:TextArea>
</mx:Application>


用两个标志量来分别监测 Ctrl 与 Enter 是否正被按下,便可以实现了,

但是上面的问题还是不知道怎么回事?!
foodyi 2008-07-24
第一个问题估计是回车键冲突了,textArea里面按回车是换行.我测试了如果去掉回车,就剩下一个ctrl键监听,就没有问题了.
remoteJavaSky 2010-11-29
我把你的代码复制到我的flex里,用Firefox,ie都行的
Global site tag (gtag.js) - Google Analytics