首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

[转] TextField中文字不跟着TextField透明度的改变而改变解决方案

2012-12-26 
[转] TextField中文字不随着TextField透明度的改变而改变解决方案有时候我们想为TextField文本文字添加一

[转] TextField中文字不随着TextField透明度的改变而改变解决方案
有时候我们想为TextField文本文字添加一些效果,比如让文字渐渐消失的效果,实现之的代码如下:

package{        import flash.display.Sprite;        import flash.events.Event;        import flash.filters.BlurFilter;        import flash.text.TextField;        import flash.text.TextFormat;                public class TestEffect extends Sprite        {                private var tf:TextField = new TextField();                                public function TestEffect()                {                        tf.defaultTextFormat = new TextFormat(null, 25);                        tf.text = "dasjkdjklasjdasjdklasjkldasjkl";                        tf.width = tf.textWidth + 5;                        tf.selectable = false;                        tf.mouseEnabled = false;                        tf.x = tf.y = 100;                        addChild( tf );                        tf.addEventListener(Event.ENTER_FRAME, onEF);                }                                private function onEF(e:Event):void                {                        if(tf.alpha > 0)                        tf.alpha -= 0.02;                }        }}


但是看不到文字渐渐消失的效果,为什么呢?寡人也不知道为什么,寡人只关心怎么去解决这个问题。

解决方案一:使用嵌入字体:
     使用嵌入字体是可以达到效果,但是对于我等天朝子民来说嵌入一个汉字字体将会大大加大Flash的体积,寡人可不愿意用这种方式。

解决方案二:设置BlendMode:
     这一招是官方讨论群的“隐竹”兄TELL ME的,以前我TMD还真不知道设置这玩意儿有用。由于其他BlendMode类型都会或多或少地改变我文本区域的颜色,所以推荐使用BlendMode.LAYER。

解决方案三:设置滤镜filters:
     为TextField设置一个滤镜filters可以解决问题,当然,你得把滤镜设置得不影响外观才行。

以上三种方案中的后两种原理是让Flash Player把TextField转换为位图来实现文字跟随外观一起播放效果的,那么就有人提出了一个想法说设置cacheAsBitmap为true行不行?我设置后发现不行,而且如果你设置了BlendMode后又设置了cacheAsBitmap为true就会让解决方案二失效。HOLY SHIT~!

热点排行