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

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

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

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

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

效果展示:

 

类原码:

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

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

热门文章推荐

请稍候...

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

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