[AS3]as3将text文字生成图片的源代码范例
最近做一个动画,需要将动态文本旋转以配合设计效果,但众所周知在Flash里有一个Bug,就是动态文本旋转之后就不可见了。
最近做一个动画,需要将动态文本旋转以配合设计效果,但众所周知在Flash里有一个Bug,就是动态文本旋转之后就不可见了。
为了解决这一问题,问了百度,解决办法基本上是使用图片替换。网上流传的一些功能不够强大便捷,于是动手写了个静态类。
效果展示:
类原码:
- package com.shirne.extend
- {
- import flash.text.TextField;
- import flash.text.TextFormat;
- import flash.text.TextFieldAutoSize;
- import flash.text.StyleSheet;
- import flash.display.Sprite;
- import flash.display.BitmapData;
- import flash.display.Bitmap;
- import flash.geom.Rectangle;
- import flash.geom.ColorTransform;
- public class ExBitmap
- {
- public function ExBitmap()
- {
- }
- public static function getTextFieldBitmap( t:TextField, trans:Boolean = true, smoothing:Boolean = true):Bitmap
- {
- var s:Sprite = new Sprite();
- s.addChild(t);
- var bitmapdata:BitmapData = new BitmapData(s.width,s.height);
- if(trans){
- bitmapdata.colorTransform(new Rectangle(0,0,s.width,s.height), new ColorTransform(0,0,0,0));
- }
- bitmapdata.draw(s,null,null,null,null,true);
- var bmp:Bitmap = new Bitmap(bitmapdata);
- bmp.smoothing = smoothing;
- return bmp;
- }
- /**
- * 将文本转换为图像
- * 文本为html文本,可以设定样式
- * 默认背景透明,平滑处理
- */
- public static function getHtmlTextBitmap(txt:String, style:StyleSheet=null, trans:Boolean = true, smoothing:Boolean = true):Bitmap
- {
- var t:TextField = new TextField();
- t.autoSize = TextFieldAutoSize.LEFT;
- if(style)t.styleSheet = style;
- t.htmlText = txt;
- return getTextFieldBitmap(t, trans, smoothing);
- }
- /**
- * 将文本转换为图像
- * 文本为纯文本,可以设定样式
- * 默认背景透明,平滑处理
- */
- public static function getTextBitmap(txt:String, tf:TextFormat = null, trans:Boolean = true, smoothing:Boolean = true):Bitmap
- {
- var t:TextField = new TextField();
- t.autoSize = TextFieldAutoSize.LEFT;
- t.text = txt;
- if(tf)t.setTextFormat(tf);
- return getTextFieldBitmap(t, trans, smoothing);
- }
- /**
- * 将文本转换为图像
- * 文本为纯文本,可以设定逐字样式
- * 默认背景透明,平滑处理
- */
- public static function getTextBitmapEx(txt:String, textFormats:Array = null, ratios:Array=null, trans:Boolean = true, smoothing:Boolean = true):Bitmap
- {
- var t:TextField = new TextField();
- t.autoSize = TextFieldAutoSize.LEFT;
- t.text = txt;
- if(textFormats){
- var i:int=0, l:int = textFormats.length, rl:int, j:int = 0;
- var tLen:int = txt.length;
- if(!ratios){
- //没有给定样式位置,则逐字设定
- for(i = 0; i < l - 1; i++){
- trace(i)
- if(textFormats[i])t.setTextFormat(textFormats[i],i,i+1);
- }
- //最后的样式应用于所有字体
- if(textFormats[i])t.setTextFormat(textFormats[i],i, tLen);
- }else{
- //给定样式位置,则依照给定位置设置
- rl = ratios.length;
- for(i = 0; i<Math.min(rl-1, l); i++){
- if(textFormats[i])t.setTextFormat(textFormats[i],ratios[i],ratios[i+1]);
- }
- if( textFormats[i])t.setTextFormat(textFormats[i],ratios[i], tLen);
- }
- }
- return getTextFieldBitmap(t, trans, smoothing);
- }
- }
- }
这里面几个静态函数不仅实现了将普通文本转换为位图,还实现了可设定样式的文本位置转换和设定了样式的html文本转换。 来源:http://www.shirne.com/cate-45/167.html
热门文章推荐
- [HLS]做自己的m3u8点播系统使用HTTP Live Streaming(HLS技术)
- [FMS]FMS流媒体服务器配置与使用相关的介绍
- [AS3]什么是M3U8,与HTML5的区别是什么
- AS2.0 让flash自适应全屏,并且不自动缩放
- [AS3]as3.0的sound类常用技巧整理
- [AS3]as3与ByteArray详解、ByteArray介绍、ByteArray用法
- 关于RTMP,RTMPT,RTMPS,RTMPE,RTMPTE协议的介绍
- [JS]分享浏览器弹出窗口不被拦截JS示例
请稍候...