作者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