1

在文本字段中键入文本时是否有某种方法可以截取文本并在出现之前将其替换为其他内容?

我正在开发一个用于学习法语的 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()例如,使用 ),但是复制文本字段的所有行为将需要太多编码:在光标处插入,而不仅仅是在结尾处;替换任何选定的文本,等等。

到目前为止,我想出的最好的方法是向 key_up 处理程序添加一个替换函数,如下所示:text.replace(/2/, 'é')。这样做的问题是,在数字 2 被重音字符替换之前,用户可以看到半秒钟:换句话说,它看起来很业余。我希望字符只是出现,就好像他们正在使用法语键盘一样。

我会很感激任何想法。

4

1 回答 1

1

按键处理程序和 event.stopImmediatePropagation() 应该可以解决问题。

于 2012-12-09T12:29:10.510 回答