作者yhn0tgb60 (呦厚厚)
看板Flash
标题[问题] 如何判断输入的文字讯息中的"ENTER"或是输入法使用中????
时间Sun Jan 23 13:32:26 2011
下面这段程式码 只有两个物件
一个是 inputTxt 是使用者用来输入文字
另一个 msgTxt 用来显示使用者输入的文字
当使用者在 inputTxt中输入完文字後按"ENTER"
就会将 inputTxt贴到 msgTxt 然後将 inputTxt清空
当 inputTxt 中没有输入文字时 按下"ENTER" 也不能送出讯息
我是用 KeyboardEvent.KEY_DOWN 来判断 是否按下 "ENTER"
在讯息确定不是"" 送到 msgTxt後 就将讯息清空
但出现一个问题
就是 "ENTER"会在 KeyboardEvent.KEY_DOWN 讯息结束後 才塞给inputTxt
所以等於 inputTxt.text='' 并没有完全把讯息清空
所以我又加了一个 addEventListener( KeyboardEvent.KEY_UP,KeyUpEnter );
在 "ENTER" 放开後 再清一次 inputTxt.text=''
这样就可以把讯息完全清空了
但是 当要输入中文时 就会失败 因为中文输入法选完字後要按"ENTER"
结果"ENTER" 按下後 中文讯息还来不及送给 msgTxt 就已经被 inputTxt.text=''
就变成不能打中文 = =
而当我一直按着 "ENTER" 不放时 "ENTER"的讯息最後还是会不对的被送出 完全档不掉
想请问大家的意见 谢谢了
package
{
import flash.display.MovieClip;
import flash.events.KeyboardEvent;
import flash.ui.Keyboard;
public class test extends MovieClip
{
public function test():void
{
inputTxt.text='';
msgTxt.text='';
addEventListener( KeyboardEvent.KEY_DOWN,KeyDownEnter );
addEventListener( KeyboardEvent.KEY_UP,KeyUpEnter );
}
private function KeyDownEnter( evt:KeyboardEvent ):void
{
if( evt.keyCode == Keyboard.ENTER )
{
if( inputTxt.text!='' )
{
msgTxt.appendText('AAA:'+inputTxt.text+'\n');
inputTxt.text='';
}
}
}
private function KeyUpEnter( evt:KeyboardEvent ):void
{
if( evt.keyCode == Keyboard.ENTER )
{
inputTxt.text='';
}
}
}
}
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 114.32.126.69
1F:推 peacedove:不用加keyup吧 我可以正常运作耶 01/23 14:00
2F:→ yhn0tgb60:没有 up 按"ENTER" 会一直送空的出去吧 01/23 14:06
3F:→ yhn0tgb60:而且下一笔会多换一行 01/23 14:06
4F:推 peacedove:我测试不会耶 01/23 14:10
5F:→ yhn0tgb60:= = 见鬼了 你可以多试试几种方法 01/24 15:57
6F:→ yhn0tgb60:像是一开始就直接按着 enter 01/24 15:57
7F:→ yhn0tgb60:或事先传过一两笔资料後 再把 ENTER长按住 01/24 15:58
8F:推 peacedove:我都试过 该不会是版本的问题吧?? 01/24 21:47