实现文本字段透明效果的几种方法

王朝other·作者佚名  2008-05-19
宽屏版  字体: |||超大  

Flash Player 6就开始支持文本字段(TextField)透明度属性(alpha),但是TextField._alpha只支持使用嵌入字体轮廓呈现的文本字段(TextField.embedFonts = true),对默认的设备字体呈现的文本字段无效。

下面先介绍TextField._alpha的实现方式,以下代码设置my_txt文本的透明度为20%。点击库->新建字体(New Font)选项,创建一字体元件(font symbol),然后设置该字体元件链接标识符为“ my font”。

var my_fmt:TextFormat = new TextFormat();

my_fmt.font = "my font";//'my font'为库中字体元件的链接标识符

this.createTextField("my_txt",this.getNextHighestDepth(), 10, 10, 100, 22);

my_txt.border = true;

my_txt.embedFonts = true;//使用嵌入字体轮廓呈现文本字段

my_txt.text = "Hello World";

my_txt.setTextFormat(my_fmt);

my_txt._alpha = 20;

以上方法用到了字体元件,使用起来不是很方便,而且由于发布时打包了字体导致swf文件相对比较大。想更多了解字体元件,参看这里Flash TechNotes: Using font symbols、Creating font symbols。

以下两种方法抛弃TextField._alpha,模拟实现文本字段的透明效果。

一、通过设置颜色模拟

function setAlpha(obj, alpha) {

var rgb = "0x"+(255*(100-alpha)/100).toString(16);

rgb = rgb << 16 | rgb << 8 | rgb;

obj.backgroundColor |= rgb;

obj.borderColor |= rgb;

obj.textColor |= rgb;

}

二、通过创建一影片剪辑作文本的蒙层

function setAlpha(obj, alpha) {

var tmp_mc_name:String = obj._name+"_alphamask_mc";

var tmp_mc:MovieClip = eval(tmp_mc_name);

if (!tmp_mc) {

tmp_mc = this.createEmptyMovieClip(tmp_mc_name,this.getNextHighestDepth());

tmp_mc.beginFill(0xFFFFFF);

tmp_mc.moveTo(0, 0);

tmp_mc.lineTo(20, 0);

tmp_mc.lineTo(20, 10);

tmp_mc.lineTo(0, 10);

tmp_mc.lineTo(0, 0);

tmp_mc.endFill();

}

tmp_mc._x = obj._x;

tmp_mc._y = obj._y;

tmp_mc._width = (obj.border) ? obj._width+1 : obj._width;

tmp_mc._height = (obj.border) ? obj._height+1 : obj._height;

tmp_mc._alpha = 100-alpha;

}

使用方法:

this.createTextField("my_txt", this.getNextHighestDepth(), 10, 10, 100, 22);

my_txt.text = "Hello World";

setAlpha(my_txt,50);//设置my_txt文本透明度为50%

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
© 2005- 王朝网络 版权所有