As3实现渐变文本
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资源包中加载到当前域再进行反射。反正一个意思,你自己画也是可以的。

浙公网安备 33010602011771号