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

浙公网安备 33010602011771号