| 网站镜像:电信 网通 | 加入收藏 | 设为首页

实现word的批量替换功能,as动态文字功能的类-StringUtil

  • 即上次的SimpleDateFormat(格式化日期类)后的又一个原创类,大家评评,继续努力,呵呵.
    这是这几天弄得,现在是1.0版,StringUtil是字符串工具类,说是文字工具类也可以,现在主要可以实现这几个功能:
    1.批量替换功能,用replace(str,str2)方法,可以将制定的文本中的str替换成str2,
    2.将制定文本中的每一个字符,用getMovileClip()转化成mc,这样就可以利用控制mc来控制这些字符,简单做出文字特效.返回的是MovieClilp数组
    3.将制定文本中的每一个字符,作为数组元素,返回数组 代码如下
    /**
    * Title: 字符串工具类
    * Description: 工具类
    * Company:
    * Copyright
    * @author wei386
    * @version 1.0
    */ class StringUtil extends String {
    private var stringObject:String;
    private var mcarray:Array;
    /**
    * 设置字符串
    * @param str 将要操作的字符串
    * @return void
    */
    function setText(str):Void
    {
    this.stringObject = str;
    }
    /**
    * 得到当前StringUtil对象的字符串
    * @param str 将要操作的字符串
    * @return void
    */
    function getText():String
    {
    return this.stringObject;
    }
    /**
    * 替换字符串中的字符
    * @param findstr 查找的字符串
    * @param replstr 将要替换的字符串
    * @return String
    */ function replace(findstr:String, replstr):String {
    var strindex:Number = 0;
    strindex = stringObject.indexOf(findstr);
    for (;;) {
    if (strindex == -1|laststrindex==-1) {
    return this.stringObject;
    }
    // 取得开始字符
    var startstr = this.stringObject.substring(0, strindex)
    // 取得最后字符
    var laststr = this.stringObject.substring(strindex+findstr.length, this.stringObject.length);
    // 在最后字符中查找是否还有要替换的字符
    var laststrindex = laststr.indexOf(findstr)
    this.stringObject = startstr+replstr+laststr
    // 设置开始字符截取位置,使每次只查找最后字符中是否有要替换的字符
    strindex = strindex +laststrindex+replstr.length }
    }
    /**
    * 返回字符串的字符数组,将字符串的每一个字符作为数据的元素返回
    * @param
    * @return Array
    */
    function getChar():Array {
    var strarray = new Array(stringObject.length);
    for (var i = 0; i<strarray.length; i++) {
    strarray[i] = stringObject.charAt(i);
    }
    return strarray;
    }
    /**
    * 得到以字符串每一个字符为MovieClilp的对象,MovieClip数组
    * @param strcolor 文字颜色
    * @param strsize 文字大小
    * @return Array
    */
    function getMovieClip(strcolor:Number,strsize:Number):Array
    {
    //声明数组,存放mc对象
    this.mcarray = new Array(stringObject.length);
    for (var i = 0; i<mcarray.length; i++) {
    //声明mc的名字
    var mcarray_name:String = "StringUtil.mc_"+i
    //在1000000层上创建一个空mc,名为"StringUtil.mc_"+i的格式
    _level0.createEmptyMovieClip(mcarray_name,10000000+i)
    //将这个产生的mc个i数组对象
    mcarray[i]=_level0[mcarray_name]

    //定义textfield的名字
    var textfieldname = mcarray[i]._name;
    //在mc上创建一个textfield
    mcarray[i].createTextField(textfieldname,10000000+i,0,0,100,100);
    // 设置textfield的字符
    mcarray[i][textfieldname].text=stringObject.charAt(i);
    // 设置文本不可选中
    mcarray[i][textfieldname].selectable=false
    var textformat:TextFormat = new TextFormat();
    textformat.color=strcolor;
    textformat.size=strsize;
    mcarray[i][textfieldname].setTextFormat(textformat);

    }
    return mcarray;
    }

    }
    使用方法:
    新建一个fla文件,写上
    var strutil = new StringUtil();
    strutil.setText("闪吧我的家");//设置要操作的文字 替换字符串方法:
    strutil.replace("我","我们");
    就可以将strutil.setText()方法设置的字符串"闪吧我的家"中的"我"换成"我们" 将字符串换成MovieClip的方法:
    var mcarray = strutil.getMovieClip(0x0099cc,50)就可以将"闪吧我的家"中的每个字符转换成MC,0x0099cc是字的颜色,50是大小,返回的mcarray是数组
    转换成mc后大小就可以用mcarray[i]._width,mcarray[i]._height控制了,就跟mc一样,然后就可以做自己的文字特效了. 这个类可以用来做as歌词用,只要每次setText()时,不同的字符串,也就是每句歌词,就可以了. 这只是1.0版,不是完整版,正在继续开发,2.0版会提供文字特效,会进一步对程序优化,提供设置文字格式的专门的方法,希望大家指正,呵呵