<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    posts - 38, comments - 2, trackbacks - 0, articles - 0
      BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

    擴展TextField,合理計算中文字符長度

    Posted on 2009-07-03 14:47 AntiquMan 閱讀(516) 評論(0)  編輯  收藏 所屬分類: Flex
    Code
     
    01.//Copyright © 2009. Http://L4cd.Net All Rights Reserved.
    02.package net.L4cd.display
    03.{
    04.    import flash.events.Event;
    05.    import flash.events.TextEvent;
    06.    import flash.text.TextField;
    07.    import flash.utils.ByteArray;
    08.  
    09.    /**
    10.     * 擴展TextField類,中文以2字符長度計算
    11.     *
    12.     * @author L4cd.Net
    13.     * @playerversion Flash player 9
    14.     * @langversion 3.0
    15.     * @version 2009-06-16
    16.     */
    17.    public class TextFieldExt extends TextField
    18.    {
    19.        private var _maxChars:int = -1;
    20.        public function TextFieldExt()
    21.        {
    22.            super();
    23.              
    24.        }
    25.        override public function get maxChars():int
    26.        {
    27.            return _maxChars;
    28.        }
    29.        override public function set maxChars(value:int):void
    30.        {
    31.            _maxChars = value;
    32.            if(maxChars<0)
    33.            {
    34.                removeEventListener(TextEvent.TEXT_INPUT,input);      
    35.            }else
    36.            {
    37.                addEventListener(TextEvent.TEXT_INPUT,input);
    38.                text = getTextByCharLength(text,maxChars);
    39.            }
    40.        }
    41.        override public function get length():int
    42.        {
    43.            return getCharLength(text);
    44.        }
    45.        private function input(e:TextEvent):void
    46.        {
    47.            //攔截并阻止textinput事件,手動處理內容輸入
    48.            var textField:TextField = e.currentTarget as TextField;
    49.            var temp:String = getTextByCharLength(e.text,maxChars - getCharLength(text) + getCharLength(selectedText));
    50.            var index:int = selectionBeginIndex;
    51.            replaceText(selectionBeginIndex,selectionEndIndex,temp);
    52.            setSelection(index+temp.length,index+temp.length);
    53.            dispatchEvent(new Event(Event.CHANGE,true));
    54.            e.preventDefault();
    55.        }
    56.        /**
    57.         * 獲取字符長度,一個中文算2長度
    58.         * @param txt
    59.         * @return 返回長度值
    60.         */    
    61.        private function getCharLength(txt:String):int
    62.        {
    63.            var byte:ByteArray = new ByteArray();
    64.            byte.writeMultiByte(txt,"gb2312");
    65.            byte.position = 0;
    66.            return byte.bytesAvailable;
    67.        }
    68.        /**
    69.         * 截取指定長度的文本內容,一個中文算2長度
    70.         * @param txt 需要截取的文本
    71.         * @param length 需要截取的長度
    72.         * @return 截取后的內容
    73.         */    
    74.        private function getTextByCharLength(txt:String,length:int):String
    75.        {
    76.            if(length<1)return "";
    77.            var byte:ByteArray = new ByteArray();
    78.            byte.writeMultiByte(txt,"gb2312");
    79.            byte.position = 0;
    80.            return byte.readMultiByte(Math.min(length,byte.bytesAvailable),"gb2312");
    81.        }
    82.    }
    83.}




    調用方法和普通TextField無異
    1.import net.L4cd.display.TextFieldExt
    2.var ext:TextFieldExt = new TextFieldExt();
    3.ext.maxChars = 15;
    4.addChild(ext);





    一般的輸入,粘貼等操作均沒問題..
    直接對text進行賦值沒有進行限制 (原來的TextField也沒限制)..
    如需限制~可以調用一次maxChars = maxChars即可..

    只有注冊用戶登錄后才能發(fā)表評論。


    網站導航:
     
    主站蜘蛛池模板: 亚洲一区二区三区在线视频| 4444亚洲国产成人精品| 中文字幕久无码免费久久| 亚洲国产精品第一区二区| 一二三四免费观看在线电影| 水蜜桃视频在线观看免费| 久久丫精品国产亚洲av不卡 | 色婷婷精品免费视频| 亚洲欧洲国产精品香蕉网| 一二三四免费观看在线电影 | 亚洲av区一区二区三| 一区二区三区四区免费视频| 亚洲精品又粗又大又爽A片| 亚洲国产精品无码久久SM| 毛片a级三毛片免费播放| 国产午夜精品理论片免费观看 | 亚洲a∨无码一区二区| 亚洲av无码国产精品色午夜字幕| 国产成在线观看免费视频| jizz免费一区二区三区| 亚洲伦理一二三四| 亚洲国产精品无码久久SM| 一本色道久久88综合亚洲精品高清| 99久热只有精品视频免费观看17| 美女一级毛片免费观看| 亚洲精品亚洲人成在线观看麻豆| 亚洲性日韩精品一区二区三区| 波多野结衣在线免费观看| 伊人久久大香线蕉免费视频| 亚洲欧美熟妇综合久久久久| 亚洲韩国在线一卡二卡| 亚洲熟妇av一区二区三区| 无码不卡亚洲成?人片| 97在线观免费视频观看| 久久免费福利视频| 成人免费777777被爆出| 免费无码午夜福利片| 亚洲色成人网站WWW永久四虎| 久久亚洲精品无码AV红樱桃| 亚洲国产精品无码久久一区二区| 免费成人午夜视频|