AS3聊天表情即图文混排源码
文章出处:天地会
原作者 explor http://bbs.9ria.com/thread-66682-1-1.html
为了新人或者正在开发这块的AS3程序员,不浪费人生中最宝贵的时间,把多余的时间研究更强大的技术中去,以下贴出关于AS3聊天表情即图文混排的源码,只用了一个方法。
使用说明:
1.首先将以下的checkFaces()方法添加到你的应用程序中;
2.利用TextField.htmlText +="聊天内容",这样的代码,先输出内容,其中内容中包含表情符号,如:/:01、/:02、.../:99;
3.再添加表情: 利用checkFaces(TextField)方法,参数为上面的TextField对象。
4.new faceMC()中的faceMC是一个MC,这个MC中保存很多表情,每一帧上放一个表情MC。当然也可以改为每个MC一个表情,甚至有能力的改变即时加载图片,以图片形式来显示等等。
复制代码
由于其中代码部分算法取至网络,如有雷同,倍数感谢!在网上有些聊天表情算法代码虽然非常好,但没有一个整体出来,现在我整理出来,作为一个可用的整理奉献给大家。
方法内的算法有待改进,
在此,诚恳期望各用了此方法的AS大侠,把改进后的源码贴出来,大家共同进步!谢谢。
感谢天地会!从这里获得很多好东西!感谢前辈们!
原作者 explor http://bbs.9ria.com/thread-66682-1-1.html
为了新人或者正在开发这块的AS3程序员,不浪费人生中最宝贵的时间,把多余的时间研究更强大的技术中去,以下贴出关于AS3聊天表情即图文混排的源码,只用了一个方法。
使用说明:
1.首先将以下的checkFaces()方法添加到你的应用程序中;
2.利用TextField.htmlText +="聊天内容",这样的代码,先输出内容,其中内容中包含表情符号,如:/:01、/:02、.../:99;
3.再添加表情: 利用checkFaces(TextField)方法,参数为上面的TextField对象。
4.new faceMC()中的faceMC是一个MC,这个MC中保存很多表情,每一帧上放一个表情MC。当然也可以改为每个MC一个表情,甚至有能力的改变即时加载图片,以图片形式来显示等等。
- //添加表情
- public function checkFaces(tf:TextField):void{
- var htmlStr:String;
- var textStr:String;
- var indexAry:Array = new Array();//表情索引数组
- var pointObj:Array = new Array();//表情占位坐标数组
- var faceSign:Array = new Array();//表情符数组
- htmlStr = tf.htmlText;
- //表情在聊天内容的符号为: /:02 , 样式说明:/:为两个字符的标识符,02表示表情数;可以自己换成想要的。
- var reg:RegExp = /\/:[0-9]{2}/g;
- faceSign = htmlStr.match(reg);//这里只搜索到两个表情符号
- if (faceSign.length == 0)return;
- //下面又把表情符号替换为空,接着下面去搜索空。如果下面去搜索表情符号
- tf.htmlText = htmlStr.replace(reg, "<font size=\'24\'> </font>");//把文本框内的内容用<font>字体标签代替字符串htmlStr中的表情符号
- var ii:uint = 0;
- textStr = tf.text;//再把文本框内的文本,非html文本赋给另一个字符串对象textStr
- while (1){
- indexAry.push(textStr.indexOf(" ", ii));//循环搜索textField.text中的空格(即上面利用<font>标签替换的字符)索引位置,保存索引位置到indexAry数组中
- if (indexAry[indexAry.length-1] == -1){//| |
- indexAry.pop();
- break;
- }
- ii = indexAry[indexAry.length-1] + 1;
- }
- var jj:uint = 0;
- var storeHeight:Number=tf.height;//把textField行高赋给临时变量
- while (jj< indexAry.length){
- tf.height=tf.textHeight;//把textField文本高赋给textField行高
- pointObj.push(tf.getCharBoundaries(indexAry[jj]));//保存表情坐标位置到数组
- tf.height=storeHeight;//把临时变量再赋给行高,还原。
- jj++;
- }
- faceSign = faceSign.reverse();//反转表情符号数组
- pointObj = pointObj.reverse();//反转坐标对象数组
- var kk:uint = 0;
- while (kk< faceSign.length){
- if (pointObj[kk] != null){
- //创建一个表情对象
- var n:uint = faceSign[kk].substr(2, 2);
- var obj:MovieClip = new faceMC();//faceMC为资源文件中的影片剪辑
- tf.parent.addChild(obj);
- obj.name = "faces";
- obj.gotoAndStop(n);//由于表情是以一个MC多帧来保存,所以计算出来的表情数,直接跳帧显示
- obj.x = pointObj[kk].x;//设置表情的x坐标
- obj.y = pointObj[kk].y;//设置表情的y坐标
- obj = null;
- kk++;
- }
- }
- reg = null;
- faceSign = null;
- pointObj = null;
- indexAry = null;
- textStr = null;
- htmlStr = null;
- }
由于其中代码部分算法取至网络,如有雷同,倍数感谢!在网上有些聊天表情算法代码虽然非常好,但没有一个整体出来,现在我整理出来,作为一个可用的整理奉献给大家。
方法内的算法有待改进,
在此,诚恳期望各用了此方法的AS大侠,把改进后的源码贴出来,大家共同进步!谢谢。
感谢天地会!从这里获得很多好东西!感谢前辈们!