2012-12-09 41 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