package component { import component.smt.controls.STextField; import component.smt.controls.STextInput; import flash.display.Bitmap; import flash.display.BitmapData; import flash.display.Sprite; import flash.events.Event; import flash.text.TextField; import flash.text.TextFieldType; import flash.text.TextFormat; import utils.Reflection; /** * 模块功能: 渐变文本 * 修改时间:Mar 13, 2012 , 6:01:30 PM * 程序编制:Mr Right * */ public class SGradiantText extends Sprite { private var _text:STextField; private var _mask:Sprite; private var _gradiantMask:BitmapData; private var _width:Number = 100; private var _height:Number = 20; public function SGradiantText(color:String = "" , isFilter:Boolean = false) { this.mouseChildren = false; this.mouseEnabled = false; //初始化文本 _text = new STextField(isFilter); _text.size = 13; _text.bold = true; addChild(_text); _text.width = _width; _text.height = _height; _text.cacheAsBitmap = true; //初始化遮罩 _mask = new Sprite(); addChild(_mask); _mask.cacheAsBitmap = true; _gradiantMask = Reflection.create("__GradiantTextMask"); updateMask(); _mask.mask = _text; this.filters = Style.GF_BLACK; } //--------------------------------style----------------------------// public function set bold(value:Boolean):void { _text.bold = value; } public function set font(value:String):void { _text.font = value; } public function set fontsize(value:int):void { _text.size = value; } public function set text(value:String):void { _text.text = value; } override public function set width(value:Number):void { super.width = value; _text.width = _width = value; updateMask(); } override public function set height(value:Number):void { super.height = value; _text.height = _height = value; updateMask(); } private function updateMask():void { if(!_gradiantMask) { return; } _mask.graphics.clear(); _mask.graphics.beginBitmapFill(_gradiantMask); _mask.graphics.drawRect(0 , 0 , _width , _height); _mask.graphics.endFill(); } } }
其中的资源反射你可以选择用loader加载一个渐变的图片,也可以讲渐变图放在swf资源包中加载到当前域再进行反射。反正一个意思,你自己画也是可以的。