实现文本字段透明效果的几种方式
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%
返回类别: Flash教程 上一教程: Flash制作漫天五彩星效果动画 下一教程: Flash MX 2004 ActionScript图文教程(五)
您可以阅读与"实现文本字段透明效果的几种方式"相关的教程: · Flash中百叶窗效果的实现 · 枫桥夜泊下 遮罩效果的动态文本 · Flash中残影效果的简朴实现 · 用DataGrid读入数据的几种方式 · 加载外部文本文件的3种方式
|