as3 textinput捕获特殊字符

时间:2013-11-04 14:42:45

标签: actionscript-3 special-characters textfield

我正在尝试使用textinput char代码捕获,但是特殊字符不起作用。请帮忙

import flash.text.TextField;
import flash.events.KeyboardEvent;

var dizi:Array = "şığ".split("");
tf.addEventListener(KeyboardEvent.KEY_DOWN, git);
function git(event:KeyboardEvent):void
{
    tf.restrict = dizi.toString();
    var harfsira:int= dizi.indexOf(String.fromCharCode(event.charCode));
    trace(dizi.toString());
    trace(harfsira.toString());
    trace(String.fromCharCode(event.charCode.toString()));

}

按下“ş”键

ş,ı,ğ
-1
º

按下“ı”键

ş,ı,ğ
-1
i

按下“ğ”键

ş,ı,ğ
-1
Û

2 个答案:

答案 0 :(得分:0)

您从String.fromCharCode(event.charCode.toString())函数获取的实际字符与数组中的字符不匹配。如果您确实按下了正确的键,则需要将阵列更改为:

var dizi:Array = "ºiÛ".split("");

解决这种不一致问题。

答案 1 :(得分:0)

如果将字体设置为unicode Arial(它可以处理特殊字符)会有帮助吗?。

  var format_tf:TextFormat = new TextFormat();
  format_tf.font = "Arial"; //"Arial Unicode MS"
  format_tf.color = 0xFFFFFF; //white
  format_tf.size = 12; 

  tf.defaultTextFormat = format_tf;

  tf.addEventListener(KeyboardEvent.KEY_DOWN, git);

或者我处理外国和国外的唯一经验特殊字符是通过byteArray。如果上述方法不起作用,我将尝试编辑我的答案,包括通过byteArray进行转换(注意:不保证可以工作,甚至没时间做)。