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键监听,就没有问题了.
|

