FLASH中的 让动态文本 支持透明度属性
这个问题一直很让人头疼
在网络了找了很久 有一个有效的办法是 用embedFonts=true 来实现
具体的步骤如下:
1.在库中创建一个 字体元件 并设置连接属性 这里假定为 my_font
2.设置动态文本属性
var my_fmt:TextFormat = new TextFormat();
my_fmt.font = "my font"; //这里连接库文件
this.createTextField("my_txt", this.getNextHighestDepth(), 10, 10, 160, 120);
my_txt.wordWrap = true;
my_txt.embedFonts = true; //这里属性为真
my_txt.text = "Hello world";
my_txt.setTextFormat(my_fmt);
此时再设置 alpha属性 就可以了
my_txt._alpha=50;
这个方法是在FLASH8论坛上找到的,我没有实施过,但是上面不少人实现了是可以的
只不过有一个缺点,因为使用了嵌入字体,所以生成的SWF文件特别大,所以有点得不偿失.
那怎么办?
.....
终于被我想到了一个办法
采用遮罩来实现透明度
既然用动态文本
那就创建一个对应的遮罩 用遮罩的透明度来实现文本的透明度
这里要注意的是 FLASH中让遮罩支持透明度一定要设置 cacheAsBitmap=true
既让FLASH中的矢量图转换成位图 这样才可以支持透明度遮罩效果
1.ctrl+f8 新建MC 随便画一个黑框 设置 X=0 Y=0,并设置link 为msktxt
2.再新建立一个 mc_font 的MC 里面插入名称为ftxt的动态文本 设置link 为mc_font
3.编写代码
tempTXT.txtContent.attachMovie("mc_font","txtIN",1);
tempTXT.txtContent.txtIN.ftxt.text = Ttxt; //设置里面的文字内容
tempTXT.attachMovie("msktxt","msktxt",2); //msktxt为库中的一个遮罩MC可以
tempTXT.txtContent.txtIN.cacheAsBitmap=true;
tempTXT.msktxt.cacheAsBitmap=true;
tempTXT.msktxt._alpha=50;
tempTXT.txtContent.txtIN.setMask(tempTXT.msktxt);
看看效果应该可以出来了
这里代码是截取我程序里的一段 ,我本来是要用onEnterFrame 来实现动态文本 透明度渐变的 所以代码长 贴出来不方便^^