您的位置:首页 > 其它

AS3制作旋转文字效果

2013-08-14 20:07 190 查看
1.建一个falsh文档,命名为:动态文本旋转

2.把Rotator.as ,第三方类文件放到与“动态文本旋转.fla”同一个文件夹中

2.在动态文本旋转.fla的动作面板中写代码

//导入必要的类Rotator
import Rotator;
//___________________________________设定必要的变量
//变更words用于存储显示的文字
var words:String = "\n各位亲爱的读者:\n"+
"  您们好!\n  很高兴与您分享经验。\n    磨砺青春之剑需要心静。只有当你真正的静下心来,你才能始终想着自己的目标,你才能最大化的集中精力。经验告诉我们,高度集中的精力带来的周密思考和大脑的高速运转,能让你策马扬鞭,战无不胜!心静也是摒弃各种干扰因素的良药,耐得住喧嚣,耐得住寂寞,高三的路上,我们还怕什么呢!";
//声明一个布尔值,标识当前文本是否正在旋转
var isRolling:Boolean = true;
//声明一个整型变量,用于计数显示的文字数
var counter:int = 0;
//____________________________________声明新文本
//新建显示文本tf
var tf:TextField = new TextField();
//设置文本自动换行;
tf.wordWrap = true;
//设置文本宽和高为400像素
tf.width = 400;
tf.height = 400;
tf.textColor = 0xFFFFFF;
//显示默认的文本边框(黑色)
tf.border = true;
//____________________________________设置格式
//声明一个TextFormat实例,用于设置文本的格式
var textFormat:TextFormat = new TextFormat();
//左右留白20像素
textFormat.leftMargin = 20;
textFormat.rightMargin = 20;
//自动两端对齐
textFormat.align = "justify";
//字号14
textFormat.size = 14;
//行间距12像素
textFormat.leading = 12;
//字间距5像素
textFormat.letterSpacing = 5;
//设置为默认格式
tf.defaultTextFormat = textFormat;
//______________________________________设置用于绘制文本的位图
//声明一个位图信息对象bmd,其宽和高各+1是为了显示出文本右侧和下侧的外边框
var bmd:BitmapData = new BitmapData(tf.width+1,tf.height+1,true,0x00FFFFFF);
//使用draw方法绘制当前的文本(当前无文本内容)
bmd.draw(tf);
//声明位图类bm,引用bmd的信息
var bm:Bitmap = new Bitmap(bmd);
//平滑显示位图内容
bm.smoothing = true;
//位图位置置于舞台中央
bm.x = (stage.stageWidth - bm.width) /2;
bm.y = (stage.stageHeight - bm.height) /2;
//声明一个Rotator实例,定位bm的注册点为正中心
var rotator:Rotator = new Rotator(bm,new Point(stage.stageWidth/2,stage.stageHeight/2));
//添加bm到显示列表
addChild(bm);
//_______________________________________设置自定义右键菜单项
//声明一个自定义菜单实例menu
var menu:ContextMenu = new ContextMenu();
//声明一个自定义菜单项menu_item1,其显示文字为"重新显示文字动画"
var menu_item1:ContextMenuItem = new ContextMenuItem("重新显示文字动画");
//将新菜单项添加到menu中
menu.customItems = [menu_item1];
//设置menu为主时间线的菜单
this.contextMenu = menu;
//_______________________________________添加必要的侦听器
//侦听播放头事件,用于旋转图像
stage.addEventListener(Event.ENTER_FRAME,rotateTF);
//侦听鼠标左键点击事件,用于切换图像是否旋转的状态
stage.addEventListener(MouseEvent.CLICK,toggleRotate);
//侦听自定义菜单项事件,当选择自定义菜单项时,执行侦听器函数restart
menu_item1.addEventListener(ContextMenuEvent.MENU_ITEM_SELECT,restart);
//_______________________________________定义各侦听器函数
//定义toggleRotate侦听器,当点击鼠标左键时切换布尔值isRolling
function toggleRotate(e:MouseEvent):void {
isRolling = !isRolling;
}
//定义rotateTF侦听器
function rotateTF(e:Event):void {
//当words内的字符没有显示完全时
if (counter < words.length) {
//每次提取words中的一个新字符
var insertWord:String =words.substr(counter,1);
//提取后计数器增加
counter++;
//在tf中显示新增加的字符
tf.appendText(insertWord);
//调用reDraw函数
reDraw();
}
//当isRolling为true时,每次旋转bm1度
if (isRolling) {
//注意rotateBy方法是自定义Rotator类定义的方法
rotator.rotateBy(1);
}
}

//定义restart侦听器,当选择自定义菜单命令时执行
function restart(e:ContextMenuEvent):void {
//初始化,重新执行
tf.text = "";
bmd.fillRect(bmd.rect,0x00FFFFFF);
bmd.draw(tf);
counter = 0;
}
//定义reDraw方法
function reDraw():void {
//设定一个矩形区域,这个区域是新添加到文本区内字符的区域
var rec:Rectangle = tf.getCharBoundaries(tf.length -1);
//在bmd中更新新添加的字符矩形区域内的位图信息
bmd.draw(tf,null,null,null,rec);
try {
//为新字符添加随机彩色发光滤镜
bmd.applyFilter(bmd,rec,rec.topLeft,new GlowFilter(0xFFFFFF*Math.random(),1,2,2,10));
//为新字符添加阴影滤镜
bmd.applyFilter(bmd,rec,rec.topLeft,new DropShadowFilter(1,1));
} catch (e) {
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: