您的位置:首页 > 其它

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

2004-12-20 16:53 429 查看
[原创]实现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("xxxx我的家");//设置要操作的文字

替换字符串方法:
strutil.replace("我","我们");
就可以将strutil.setText()方法设置的字符串"xxxx我的家"中的"我"换成"我们"

将字符串换成MovieClip的方法:
var mcarray = strutil.getMovieClip(0x0099cc,50)
就可以将"xxxx我的家"中的每个字符转换成MC,0x0099cc是字的颜色,50是大小,返回的mcarray是数组
转换成mc后大小就可以用mcarray[i]._width,mcarray[i]._height控制了,就跟mc一样,然后就可以做自己的文字特效了.

这个类可以用来做as歌词用,只要每次setText()时,不同的字符串,也就是每句歌词,就可以了.

这只是1.0版,不是完整版,正在继续开发,2.0版会提供文字特效,会进一步对程序优化,提供设置文字格式的专门的方法,希望大家指正,呵呵
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息