限制文本框字符数

创建角色要求字符数不能超过6个,我之前的做法是

label.maxChars = 6;

 

这样设置,不管是中文还是英文,都只能输入6个字符。如果是中文6个字符,肯定是足够了,但是英文,比如我自己的名字LouisSong,就有点不够了。

测试之后发现用以下代码可以解决:

label.addEventListener(Event.CHANGE,onChange);
label.addEventListener(TextEvent.TEXT_INPUT,onInput);

private var tempStr:String = '';
private var bytes:ByteArray = new ByteArray();
private function onInput(event:TextEvent):void
{
     tempStr = label.text;
}
        
private function onChange(event:Event):void
{
    bytes.length = 0;
    bytes.writeMultiByte(label.text,'gbk');
    if(bytes.length > 12)
    {
        label.text = tempStr;
    }
}

其中TextInput事件会在按下键盘,label里面的文字改变的时候触发,此时oninput函数运行的时候,label的文字还没改变。
change事件会在label的文字改变后触发。

这里说一下几种编码格式的区别:

 

utf-8使用中文就会占用3个字节,英文的话只有一个字节
unicode中英文都是2个字节
gbk中文2个字节,英文1个字节

 所以,我在这里选择了gbk格式

posted @ 2013-09-06 13:35  LouisSong  阅读(600)  评论(0编辑  收藏  举报