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