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都行的
|