限制文本框字符数
创建角色要求字符数不能超过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格式