package ch13_1
{
import fl.transitions.*;
import fl.transitions.easing.*;
import flash.display.Graphics;
import flash.display.MovieClip;
import flash.display.Sprite;
import flash.events.MouseEvent;
import flash.filters.GlowFilter;
import flash.geom.Rectangle;
import flash.text.TextField;
public class FlyText extends MovieClip
{
//设置一个布尔值menuIsOn,与菜单是否显示同步更新
var menuIsOn:Boolean = false;
//使用数组menuText存储各个菜单的显示文字
var menuText:Array = ["首页","新闻","案例","合作","服务","产品","联系我们","友情链接","Horidream"];
//以一个矩形实例menuRec定义感应区
var menuRec:Rectangle = new Rectangle(0,0,80,24*menuText.length);
//声明一个MovieClip实例canvas,作为菜单的容器
var canvas:MovieClip = new MovieClip();
//使用Graphics实例g引用canvas.graphics
var g:Graphics = canvas.graphics;
public function FlyText()
{
stage.frameRate = 30;
//使用循环结构,绘制菜单
for (var i:uint = 0; i<menuText.length; i++) {
//菜单栏的颜色为随机色
var color:uint = 0xFFFFFF*Math.random();
//绘制各个菜单栏(矩形)
g.moveTo(0,24*i);
g.beginFill(color);
g.drawRect(0,24*i,80,24);
g.endFill();
//设置菜单栏的显示文字
var t:TextField = new TextField();
//显示内容对应menuText的各元素
t.text = menuText[i];
//设置文本的位置
t.x = 10;
t.y = 24*i + 3;
//设置文本不可选
t.selectable = false;
//文字外发光描边
t.filters = [new GlowFilter(0xFFFFFF,1,2,2,255)];
//将文字添加到canvas的显示列表
canvas.addChild(t);
}
//在菜单栏外绘制一圈黑色边框
g.lineStyle(1);
g.drawRect(0,0,80,24*menuText.length);
addChild(canvas);
//程序开始时使用飞出效果,将菜单栏隐藏
TransitionManager.start(canvas,{type:Fly,duration:.3,direction:1,easing:Strong.easeIn});
//注册鼠标移动的侦听器showMenu
stage.addEventListener(MouseEvent.MOUSE_MOVE,showMenu);
}
private function showMenu(e:MouseEvent):void {
//当鼠标移动到感应区,且当前菜单未显示时
if (menuRec.contains(mouseX,mouseY) && !menuIsOn) {
//菜单飞入
TransitionManager.start(canvas,{type:Fly,duration:.3,direction:0,easing:Back.easeOut});
//注销侦听showMenu函数
stage.removeEventListener(MouseEvent.MOUSE_MOVE,showMenu);
//注册侦听鼠标移出感应区的侦听器closeMenu
stage.addEventListener(MouseEvent.MOUSE_MOVE,closeMenu);
//与menuIsOn变量同步菜单状态
menuIsOn = true;
}
}
private function closeMenu(e:MouseEvent):void {
//当鼠标移动感应区,且状态为显示时
if (!menuRec.contains(mouseX,mouseY) && menuIsOn) {
//菜单飞出
TransitionManager.start(canvas,{type:Fly,duration:.3,direction:1,easing:Strong.easeIn});
注册鼠标移动的侦听器showMenu
stage.addEventListener(MouseEvent.MOUSE_MOVE,showMenu);
//注销侦听鼠标移出感应区的侦听器closeMenu
stage.removeEventListener(MouseEvent.MOUSE_OUT,closeMenu);
//与menuIsOn变量同步菜单状态
menuIsOn = false;
}
}
}
}