Flash 板


LINE

不知道有沒有回答你的問題 我看你的情況應該是AS3.0的TextField 依照我做過聊天室的經驗來說 真的很怪 首先 我預設Enter送出 而Ctrl+Enter換行 Flash的讀取用換行字元不是想像中的""或是chr(13) 而是"\r" 但是的寫入用換行字元卻是"\n" if(key.keyCode==13 && key.ctrlKey==false){ 按下Enter發送,這沒問題 if(ctrl_text.text !== "" && ctrl_text.text.substring(ctrl_text.caretIndex-1,ctrl_text.caretIndex) == "\r") { 這個很詭異 當目標text不是空時才會發送 但是按下Enter瞬間其實他是會先換行才執行你送出的function 換句話說,Flash程式本身換行優先,而你的function次要 因此送出的時候偵測text時,會是"文字訊息\r" if(ctrl_text.text == "\r") { ctrl_text.text = "" //如果送出時只有換行字元,表示原先是空的,強制把換行字元弄掉(不換行) }else{ //發送訊息 } } } if(key.keyCode==13 && key.ctrlKey==true){ // Ctrl+Enter ctrl_text.text=ctrl_text.text.substring(0,ctrl_text.caretIndex) //游標所在之處 +"\n" //加上換行 +ctrl_text.text.substring(ctrl_text.caretIndex,ctrl_text.length) //接上結尾 ctrl_text.setSelection(ctrl_text.caretIndex+1,ctrl_text.caretIndex+1) //將游標移到你換行的地方,因為\n算一個,因此要+1 //我記得這個情況+"\r"會沒反應 這是使用Ctrl+Enter避開普通Enter會產生基本換行動作的funcion http://www.mediafire.com/?p8ub48j2y3ig5cj 這是funcion區段 呼叫方法是test的鍵盤偵測 上面的方法聽說稱為dirty hack www 也就是只是查出Flash預設會怎樣,強制反解而已 ※ 引述《yhn0tgb60 (呦厚厚)》之銘言: : 下面這段程式碼  只有兩個物件 : 一個是 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=''; : } : } : } : } -- 「杏、どうしたんだ?」 「どっ、どうもしてないわよ。あんたこそ、椋とデートじゃなかったの?」 「ずぶ濡れじゃねぇかよ、ふっふっ」 「来ないで!!!!!!!!!!!!!!……                      来ないで…お願いだから…」       京都アニメ クラナド~AfterStory~第25話 「もうひとつの世界─杏編」 --



※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 61.62.110.175 ※ 編輯: KawasumiMai 來自: 61.62.110.175 (01/27 23:54)
1F:推 yhn0tgb60:非常謝謝妳 我再研究看看 01/28 00:47
2F:推 yhn0tgb60:謝謝 關鍵在 ENTER='\r' 把'\r'判斷掉 問題就解決了 01/30 15:30







like.gif 您可能會有興趣的文章
icon.png[問題/行為] 貓晚上進房間會不會有憋尿問題
icon.pngRe: [閒聊] 選了錯誤的女孩成為魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一張
icon.png[心得] EMS高領長版毛衣.墨小樓MC1002
icon.png[分享] 丹龍隔熱紙GE55+33+22
icon.png[問題] 清洗洗衣機
icon.png[尋物] 窗台下的空間
icon.png[閒聊] 双極の女神1 木魔爵
icon.png[售車] 新竹 1997 march 1297cc 白色 四門
icon.png[討論] 能從照片感受到攝影者心情嗎
icon.png[狂賀] 賀賀賀賀 賀!島村卯月!總選舉NO.1
icon.png[難過] 羨慕白皮膚的女生
icon.png閱讀文章
icon.png[黑特]
icon.png[問題] SBK S1安裝於安全帽位置
icon.png[分享] 舊woo100絕版開箱!!
icon.pngRe: [無言] 關於小包衛生紙
icon.png[開箱] E5-2683V3 RX480Strix 快睿C1 簡單測試
icon.png[心得] 蒼の海賊龍 地獄 執行者16PT
icon.png[售車] 1999年Virage iO 1.8EXi
icon.png[心得] 挑戰33 LV10 獅子座pt solo
icon.png[閒聊] 手把手教你不被桶之新手主購教學
icon.png[分享] Civic Type R 量產版官方照無預警流出
icon.png[售車] Golf 4 2.0 銀色 自排
icon.png[出售] Graco提籃汽座(有底座)2000元誠可議
icon.png[問題] 請問補牙材質掉了還能再補嗎?(台中半年內
icon.png[問題] 44th 單曲 生寫竟然都給重複的啊啊!
icon.png[心得] 華南紅卡/icash 核卡
icon.png[問題] 拔牙矯正這樣正常嗎
icon.png[贈送] 老莫高業 初業 102年版
icon.png[情報] 三大行動支付 本季掀戰火
icon.png[寶寶] 博客來Amos水蠟筆5/1特價五折
icon.pngRe: [心得] 新鮮人一些面試分享
icon.png[心得] 蒼の海賊龍 地獄 麒麟25PT
icon.pngRe: [閒聊] (君の名は。雷慎入) 君名二創漫畫翻譯
icon.pngRe: [閒聊] OGN中場影片:失蹤人口局 (英文字幕)
icon.png[問題] 台灣大哥大4G訊號差
icon.png[出售] [全國]全新千尋侘草LED燈, 水草

請輸入看板名稱,例如:Soft_Job站內搜尋

TOP