[转] 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~!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值