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 意見 :