2012-12-09 58 views
1

當文本字段中鍵入文本並在出現之前將其替換爲其他內容時,是否有某種方法來攔截文本?AS3 - 截取並替換輸入文本

我正在開發學習法語的Flash遊戲,我想讓用戶在美式鍵盤上輸入重音符號。在法語鍵盤上,'é'由'2'鍵產生。由於遊戲不需要數字,我希望用戶能夠按'2'並在文本字段中顯示'é'(並與其他口音類似)。

我希望能夠使用key_down的事件處理程序是這樣的:

function myInputOnKeyDown(event:KeyboardEvent) { 
    if (event.keyCode == 50) { 
     event.charCode = 233; // = the code for 'é' 
    } 
} 

這在其他平臺上工作,但似乎並沒有在所有的工作ActionScript 3中我試着使用key_down,key_up,text_input事件,調整了十幾種不同的方式,但沒有成功:我似乎無法更改事件屬性,只是閱讀它們。

我也嘗試停止事件傳播並手動插入重音字符。這在正常使用中工作正常(例如使用appendText()),但是重現文本字段的所有行爲將會是過多的編碼:插入光標而不僅僅是結尾;替換任何選定的文本,等等。

到目前爲止我所得到的最好的結果是沿着:text.replace(/2/, 'é')的行向key_up處理程序添加替換函數。與此相關的問題是用戶在用重音字符替換之前可以看到數字2,換句話說,它看起來是業餘的。我希望角色能夠出現,就好像他們使用法語鍵盤一樣。

我很感激任何想法。

回答

1

按鍵處理程序和event.stopImmediatePropagation()應該做的伎倆。

+0

感謝您的回答,但似乎並未改變出現在輸入框中的文字。我仍然得到'2'而不是'é'。 – Griswolder

+0

啊對不起,我發佈這個時候已經很晚了,你將無法修改事件,你將不得不手動更新輸入框中的文本,所以在AS3中替換字符串中的字符後://stackoverflow.com/questions/2831502/change-a-character-in-a-string-using-actionscript – shaunhusain