AS3实现走马灯效果

     走马灯的实现思路多种多样,当然我们希望设计一个功能齐全的效果。所以我最终选择对一个textField的位置进行设置。然后使用一个蒙版来设置显示区域。具体的详见代码:

  

package 
{	
	import flash.display.Shape;
	import flash.display.Sprite;
	import flash.events.Event;
	import flash.text.TextField;
	import flash.text.TextFormat;
	
	/**
	 *模块功能:走马灯文本组件
	 *修改时间:Apr 7, 2011
	 *程序编制:Jacku
	 */
	public class MarQueeText extends Sprite
	{
		private var _x:Number = 0;
		private var _width:Number = 0;
		private var _speed:Number = 0.5;
		private var _label:String = '';
		private var _text:CLabel = null;
		private var _textFormat:TextFormat = null;
		private var _mask:Shape = null;
		
		public function MarQueeText(_x:Number , _y:Number , _width:Number , _height:Number)
		{
			this._x = _x;
			this._width = _width;
			_mask = new Shape();
			_mask.graphics.clear();
			_mask.graphics.beginFill(0xffffff , 0.5);
			_mask.graphics.drawRect(_x , _y , _width , _height);
			_mask.graphics.endFill();
			addChild(_mask);
			_text = new TextField();
			_text.x = _x + _width;
			_text.y = _y;
			_text.height = 20;
			_text.mask = _mask;
			addChild(_text);
			addEventListener(Event.ENTER_FRAME , onEnterFrame);
		}
		
		private function onEnterFrame(event:Event):void
		{
			if(_text.x < _x -(_text.text.length) * 12)
			{
				_text.x = _x + _width;
			}
			_text.x -= _speed;
		}
		
		public function get label():String
		{
			return _label;
		}
		
		public function set label(value:String):void
		{
			_label = value;
			_text.htmlText = value;
			_text.width = (value.length + 1) * 12;
		}
		
		public function get speed():Number
		{
			return _speed;
		}
		
		public function set speed(value:Number):void
		{
			_speed = value;
		}
		
	}
}

最主要的就是蒙版的使用,这一点在游戏里很多的地方都是可以借鉴的,最终的显示结果是,蒙版蒙的区域是可见的,蒙版之外的区域不可见,不知道您懂了没

文件下载

posted @ 2011-04-14 17:32  yurong3000  阅读(1089)  评论(0)    收藏  举报