2006年12月8日 星期五

Flash 8 半透明输入、动态文字字段

Ticore's Blog

Flash 8 以前,假如要做半透输入文字字段
必须要嵌入字型

但是中文字型随便都好几 mb
会让 swf 文件大小暴增
这样便不适合在网络上使用

拜 Flash 8 新增的功能所赐 - 位图快取、滤镜、混合模式...
已经不需要嵌入字型
就可以做到半透明输入、动态文字字段

方式很多种
原理都是让 Flash Player 底层将文字字段预先以位图方式处理过
这样就可以套用 alpha 属性了

当然你也可以自己用 ActionScript 将文字字段做位图处理
不过比较麻烦一点

强迫 Flash Player 预先以位图渲染的方式:

  1. 使用混合模式 (Blend Mode)
  2. 使用位图快取 (MovieClip.cacheAsBitmap)
  3. 套用滤镜

以下是用 AS 动态创建输入文字字段
利用滤镜强迫输入文字字段预先以位图渲染
再对文字字段设置 _alpha 属性达到半透明的效果

var txt:TextField = this.createTextField("txt", 100, 0, 0, 160, 160);
txt.type = "INPUT";
txt.border = true;
txt.multiline = true;
txt.wordWrap = true;
var tf:TextFormat = new TextFormat();
tf.size = 24;
tf.bold = true;
txt.setNewTextFormat(tf);
//
import flash.filters.*;
var bf:DropShadowFilter = new DropShadowFilter(1, 45, 1, 1);
var txtFilters:Array = txt.filters;
txtFilters.push(bf);
txt.filters = txtFilters;
//
txt._alpha = 50;

另外一种方式比较简单

直接将文字字段包覆一层 MovieClip
对外层 MovieClip 设置混合模式为 "layer",以及 alpha 值即可

 

示范

相关连结:
Flex Label, TextField 半透明小技巧

转载请注明出处 http://ticore.blogspot.com/2006/12/flash-8.html

0 意见 :