テキストフィールドに入力されたテキストを傍受し、表示される前に別のものに置き換える方法はありますか?
フランス語学習用の Flash ゲームを開発しています。ユーザーが US キーボードでアクセントを入力できるようにしたいと考えています。フランス語のキーボードでは、「é」は「2」キーによって生成されます。このゲームには数字は必要ないので、ユーザーが「2」を押して、テキスト フィールドに「é」が表示されるようにしたいと思います (他のアクセントも同様です)。
次のような key_down イベントハンドラーを使用できることを望んでいました。
function myInputOnKeyDown(event:KeyboardEvent) {
if (event.keyCode == 50) {
event.charCode = 233; // = the code for 'é'
}
}
これは他のプラットフォームでは機能していましたが、Actionscript 3 ではまったく機能していないようです。イベントのプロパティを変更することができます。それらを読み取るだけです。
また、イベントの伝播を停止し、アクセント付きの文字を手動で挿入しようとしました。これは通常の使用 (appendText()
たとえば を使用) では問題なく機能しますが、テキスト フィールドのすべての動作を再現するにはコーディングが多すぎます。選択したテキストを置き換えるなど。
これまでに思いついた最善の方法は、次の行に沿って key_up ハンドラーに置換関数を追加することですtext.replace(/2/, 'é')
。これに関する問題は、ユーザーが数字の 2 を 0.5 秒間、アクセント付きの文字に置き換える前に見ることができることです。つまり、素人っぽく見えます。フランス語のキーボードを使用しているかのように、文字が表示されるようにしたいと思います。
どんなアイデアにも感謝します。