[問題] 如何判斷輸入的文字訊息中的"ENTER"或是輸入法使用中????

看板Flash作者 (呦厚厚)時間13年前 (2011/01/23 13:32), 編輯推噓3(305)
留言8則, 2人參與, 最新討論串1/1
下面這段程式碼  只有兩個物件 一個是 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

01/23 14:00, , 1F
不用加keyup吧 我可以正常運作耶
01/23 14:00, 1F

01/23 14:06, , 2F
沒有 up 按"ENTER" 會一直送空的出去吧
01/23 14:06, 2F

01/23 14:06, , 3F
而且下一筆會多換一行
01/23 14:06, 3F

01/23 14:10, , 4F
我測試不會耶
01/23 14:10, 4F

01/24 15:57, , 5F
= = 見鬼了 你可以多試試幾種方法
01/24 15:57, 5F

01/24 15:57, , 6F
像是一開始就直接按著 enter
01/24 15:57, 6F

01/24 15:58, , 7F
或事先傳過一兩筆資料後 再把 ENTER長按住
01/24 15:58, 7F

01/24 21:47, , 8F
我都試過 該不會是版本的問題吧??
01/24 21:47, 8F
文章代碼(AID): #1DExribd (Flash)