·您当前的位置:首页 > 技术教程 > AS2与AS3技术 >

[AS3]as3将text文字生成图片的源代码范例

时间:2017-08-10 17:43酷播
最近做一个动画,需要将动态文本旋转以配合设计效果,但众所周知在Flash里有一个Bug,就是动态文本旋转之后就不可见了。

最近做一个动画,需要将动态文本旋转以配合设计效果,但众所周知在Flash里有一个Bug,就是动态文本旋转之后就不可见了。

为了解决这一问题,问了百度,解决办法基本上是使用图片替换。网上流传的一些功能不够强大便捷,于是动手写了个静态类。

效果展示:

 

类原码:

  1. package com.shirne.extend 
  2. { 
  3.     import flash.text.TextField; 
  4.     import flash.text.TextFormat; 
  5.     import flash.text.TextFieldAutoSize; 
  6.     import flash.text.StyleSheet; 
  7.     import flash.display.Sprite; 
  8.     import flash.display.BitmapData; 
  9.     import flash.display.Bitmap; 
  10.     import flash.geom.Rectangle; 
  11.     import flash.geom.ColorTransform; 
  12.  
  13.     public class ExBitmap 
  14.     { 
  15.  
  16.         public function ExBitmap() 
  17.         { 
  18.         } 
  19.          
  20.         public static function getTextFieldBitmap( t:TextField, trans:Boolean = true, smoothing:Boolean = true):Bitmap 
  21.         { 
  22.             var s:Sprite = new Sprite(); 
  23.             s.addChild(t); 
  24.             var bitmapdata:BitmapData = new BitmapData(s.width,s.height); 
  25.             if(trans){ 
  26.                 bitmapdata.colorTransform(new Rectangle(0,0,s.width,s.height), new ColorTransform(0,0,0,0)); 
  27.             } 
  28.             bitmapdata.draw(s,null,null,null,null,true); 
  29.             var bmp:Bitmap = new Bitmap(bitmapdata); 
  30.             bmp.smoothing = smoothing; 
  31.             return bmp; 
  32.         } 
  33.  
  34.         /** 
  35.          * 将文本转换为图像 
  36.          * 文本为html文本,可以设定样式 
  37.          * 默认背景透明,平滑处理 
  38.          */ 
  39.         public static function getHtmlTextBitmap(txt:String, style:StyleSheet=null, trans:Boolean = true, smoothing:Boolean = true):Bitmap 
  40.         { 
  41.             var t:TextField = new TextField(); 
  42.             t.autoSize = TextFieldAutoSize.LEFT; 
  43.             if(style)t.styleSheet = style; 
  44.             t.htmlText = txt; 
  45.             return getTextFieldBitmap(t, trans, smoothing); 
  46.         } 
  47.          
  48.         /** 
  49.          * 将文本转换为图像 
  50.          * 文本为纯文本,可以设定样式 
  51.          * 默认背景透明,平滑处理 
  52.          */ 
  53.         public static function getTextBitmap(txt:String, tf:TextFormat = null, trans:Boolean = true, smoothing:Boolean = true):Bitmap 
  54.         { 
  55.             var t:TextField = new TextField(); 
  56.             t.autoSize = TextFieldAutoSize.LEFT; 
  57.             t.text = txt; 
  58.             if(tf)t.setTextFormat(tf); 
  59.             return getTextFieldBitmap(t, trans, smoothing); 
  60.         } 
  61.          
  62.         /** 
  63.          * 将文本转换为图像 
  64.          * 文本为纯文本,可以设定逐字样式 
  65.          * 默认背景透明,平滑处理 
  66.          */ 
  67.         public static function getTextBitmapEx(txt:String, textFormats:Array = null, ratios:Array=null, trans:Boolean = true, smoothing:Boolean = true):Bitmap 
  68.         { 
  69.             var t:TextField = new TextField(); 
  70.             t.autoSize = TextFieldAutoSize.LEFT; 
  71.             t.text = txt; 
  72.             if(textFormats){ 
  73.                 var i:int=0, l:int = textFormats.length, rl:int, j:int = 0; 
  74.                 var tLen:int = txt.length; 
  75.                 if(!ratios){ 
  76.                     //没有给定样式位置,则逐字设定 
  77.                     for(i = 0; i < l - 1; i++){ 
  78.                         trace(i) 
  79.                         if(textFormats[i])t.setTextFormat(textFormats[i],i,i+1); 
  80.                     } 
  81.                     //最后的样式应用于所有字体 
  82.                     if(textFormats[i])t.setTextFormat(textFormats[i],i, tLen); 
  83.                 }else{ 
  84.                     //给定样式位置,则依照给定位置设置 
  85.                     rl = ratios.length; 
  86.                     for(i = 0; i<Math.min(rl-1, l); i++){ 
  87.                         if(textFormats[i])t.setTextFormat(textFormats[i],ratios[i],ratios[i+1]); 
  88.                     } 
  89.                     if( textFormats[i])t.setTextFormat(textFormats[i],ratios[i], tLen); 
  90.                 } 
  91.             } 
  92.             return getTextFieldBitmap(t, trans, smoothing); 
  93.         } 
  94.  
  95.     } 
  96.  
  97. } 

这里面几个静态函数不仅实现了将普通文本转换为位图,还实现了可设定样式的文本位置转换和设定了样式的html文本转换。 来源:http://www.shirne.com/cate-45/167.html

热门文章推荐

请稍候...

保利威视云平台-轻松实现点播直播视频应用

酷播云数据统计分析跨平台播放器