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

posted @ 2012-05-30 10:32  yurong3000  阅读(395)  评论(0编辑  收藏  举报