透明
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%