首页 | 网页设计 | w3c标准 | flash动画 | 平面设计 | 经典文章 | 特约专题 | 资源下载 | 健康频道 | 重庆品牌网站 | 留言簿 | 
技术文章  资源下载 经典素材  社区论坛
   
 您现在的位置: vi设计在线 >> 经典文章 >> 网页设计 >> w3c标准学习 >> 正文  
  ActionScript3打造很酷的晃动菜单       ★★★★
[ 作者:佚名    转贴自:本站原创    点击数:5628    更新时间:2010/5/31    文章录入:diyi880

减小字体 增大字体

ActionScript3打造很酷的晃动菜单


本教程将教你如何使用ActionScript 3创建一个很酷的晃动的菜单。所有的动画是通过ActionScript完成的,所以没有时间轴动画。我们可以看看最终的成果!
获取TweenMax
我们将使用TweenMax来做菜单的动画。因此,下载as3的TweenMax将节省我们很多时间!将“gs”文件夹保存在你的根目录下。

新建文件
启动您的Flash并创建一个新的Flash的ActionScript 3文件。
Flash文档属性
设置下列文件属性:
宽度: 400像素
高: 100像素
背景颜色: 黑色
帧频:30
菜单矩形形状
在舞台上,绘制一个具有以下属性的矩形。
宽度: 8px
高度: 8px
笔触颜色: 无!
填充颜色: #FF8800

菜单矩形MovieClip
将矩形转换为影片剪辑(选择矩形并按F8键)。将它命名为“Menu Rectangle”,并将中心设置为注册点。同样,将矩形链接一个名为“MenuRectangle”的类。
更多矩形菜单MovieClip
从完成的影片中,你可以看到,每个菜单项我们需要多个矩形菜单。因此,拖7个矩形菜单到舞台上(现在舞台上应该一共有8个矩形菜单)。将它们水平对齐和均匀分布。你可以使用对齐功能来帮助你。注意,当您选择按空间均匀分布矩形按钮时,你不应该 选择“相对舞台”。

再更多的矩形菜单
菜单按钮上,我们仍然需要更多的的矩形菜单。因此,选择所有8个矩形菜单,按住Alt键并拖动和放下以创建新一行矩形菜单。同样的方法创建第三排。现在,你应该有一个8 × 3的长方形矩阵(8 列和3行)。
Home按钮的MovieClip
现在,我们准备创建一个菜单按钮影片剪辑。选择所有矩形菜单并将其转换为一个单一的影片剪辑。将它命名为“主页按钮”,并将中心设置为注册点。
按钮标签
双击舞台上的Home按钮的影片剪辑,进到“内部”。在影片剪辑中,选择所有矩形菜单,并设置alpha为30%。
菜单文本层
仍然在Home按钮影片剪辑中,创建一个命名为“text”新层。

文本字段
在文字层中,创建一个静态文本和并设置为“Home”。文本字段的位置在菜单上矩形和大小的顶部,以便它涵盖大部分的矩形区域。设置下列属性。
字体: Berlin Sans
大小: 14磅
颜色: 白色
格式: 居中
碰撞区域层
仍然在home按钮影片剪辑中,创建一个名为“hit area”的层。
碰撞区域MovieClip
在hit area层中,绘制一个白色矩形,覆盖所有的菜单矩形。将矩形转换为影片剪辑。并命名为“hit area”,并将中心设置为注册点。
实例名称
给hit area影片剪辑的实例名称设为“mouseArea”。
碰撞区域的alpha
我们不希望hit area是可见的,它唯一的功能是捕捉鼠标事件。因此,设定hit area的alpha为0。
ActionScript层
仍然在Home按钮影片剪辑中,创建一个名为“actions”的层。
ActionScript  - 初始化
现在,我们已经准备好了所有图形和影片剪辑,我们可以开始ActionScript编写了。因此,在actions层中,键入以下代码。
//Import TweenMax 

import gs.*; 

 

//This array will contain all the rectangles 

var rectangles:Array = new Array(); 

 

//Loop through the items in this movie clip 

for (var i:uint = 0; i < this.numChildren; i++) { 

 

        //Get an object 

        var object:* = this.getChildAt(i); 

 

        //Check to see if the object is a MenuRectangle 

        if (object is MenuRectangle) { 

 

                //Save the rectangle’s coordinates (we need these later on) 

                object.origX = object.x; 

                object.origY = object.y; 

 

                //Add the rectangle to the rectangles array 

                rectangles.push(object); 

        } 

}
这段代码应该是很简单的。我们首先导入TweenMax,并创建一个包含所有矩形菜单的数组。在for循环我们遍历舞台上所有的单元。我们检查的这个单元是不是一个矩形菜单,如果是,则添加到矩形数组中。这样一来即使不修改ActionScript代码,我们也能在按钮中容易地添加更多的矩形。

ActionScript- 鼠标处理函数
键入下面的代码,添加一些鼠标的功能。

//Add mouse listeners for the mouse area 

mouseArea.addEventListener(MouseEvent.MOUSE_OVER, mouseOverHandler); 

mouseArea.addEventListener(MouseEvent.MOUSE_OUT, mouseOutHandler); 

mouseArea.addEventListener(MouseEvent.CLICK, itemClicked); 

 

//This function is called when the cursor is over the mouse area 

function mouseOverHandler(e:Event):void { 

 

        //Loop through the rectangle array 

        for (var i:uint = 0; i < rectangles.length; i++) { 

 

                //Assign the rectangle to a local variable 

                var rectangle:MenuRectangle = rectangles[i] as MenuRectangle; 

 

                //Calculate random target coordinates for the rectangle 

                var randomX:Number = rectangle.x + 10 * Math.cos(Math.random() * Math.PI * 2); 

                var randomY:Number = rectangle.y + 10 * Math.sin(Math.random() * Math.PI * 2); 

 

                //Animate the rectangle to the random coordinates 

                TweenMax.to(rectangle, 0.4, {x: randomX, y: randomY, alpha: 0.6, tint: Math.random() * 0xffffff}); 

 

        } 

 

        //Add an ENTER_FRAME listener for the shake effect 

        addEventListener(Event.ENTER_FRAME, shake); 

 

//This function is called when the cursor moves out of the mouse area 

function mouseOutHandler(e:Event):void { 

 

        //Loop through the rectangle array 

        for (var i:uint = 0; i < rectangles.length; i++) { 

 

                //Assign the rectangle to a local variable 

                var rectangle:MenuRectangle = rectangles[i] as MenuRectangle; 

 

                //Tween the rectangle to the original position 

                TweenMax.to(rectangle, 0.4, {x: rectangle.origX, y: rectangle.origY, rotation: 0, alpha: 0.3, tint: 0xff8800}); 

        } 

 

        //Remove the ENTER_FRAME listener (we don’t want to shake the rectangle anymore) 

        removeEventListener(Event.ENTER_FRAME, shake); 

 

//This function is called when the mouse area is clicked 

function itemClicked(e:Event):void { 

 

        //Navigate to some URL 

        var urlRequest:URLRequest = new URLRequest("http://tutorials.flashmymind.com"); 

        navigateToURL(urlRequest); 

}
正如你所看到的一样,我们侦听鼠标区域的经过、移出和点击事件。在 mouseOverHandler() 函数中,我们计算每个菜单矩形的随机坐标。然后我们使用TweenMax的完成补间动画。我们同时进行了矩形的颜色和alpha的补间。我们还添加了一个ENTER_FRAME侦听来完成震动效果(在下一步中仔细介绍)。在mouseOutHandler() 中, 我们只需在菜单矩形做一个补间动画将其恢复到其原始状态。如果该单元被点击,将跳转到一个URL地址。接下来,让我们来看看产生动摇效果的shake() 函数,。

ActionScript-摇动效果
为了添加摇动效果,我们要键入以下代码。

function shake(e:Event):void { 

 

        //Loop through the rectangles array 

        for (var i:uint = 0; i < rectangles.length; i++) { 

 

                //Assign the rectangle to a local variable 

                var rectangle:MenuRectangle = rectangles[i] as MenuRectangle; 

 

                //Rotate the rectangle a random amount  (from -4 to 4)  

                rectangle.rotation += Math.random() * 8 - 4; 

 

                //Assign a new random position (from -4 to 4)  

                rectangle.x+=Math.random()*8-4; 

                rectangle.y+=Math.random()*8-4; 

        } 

}
在 shake() 函数中,我们随机旋转和随机分配每个矩形菜单的坐标。在每一帧都调用一次这个函数,以产生一个动摇的效果。

创造更多的按钮
现在我们有一个简单的按钮了,您可以测试一下您的影片!然而,通常在菜单中我们应该有一个以上的按钮,所以让我们看看如何实现这一目标。

复制影片剪辑
做一个例子,我们将创建一个“About”按钮。首先转到主时间轴。在库面板中,右键点击“Home Button”影片剪辑,并选择“复制”。

About按钮MovieClip
Flash将会给新的MovieClip要求一个名字,将它命名为“About Button”。
现在我们完成了创建一个新的按钮!您需要做的仅仅是将其拖到舞台上,并将其中的文本改为“About”。

 上一篇文章: 如何在ActionScript3.0中建立一个帧频计数器
 下一篇文章: 没有了
发表评论】【告诉好友】【打印此文】【关闭窗口


技术文章  资源下载
经典素材  社区论坛
 中大型美容美发店老…[981]
 重庆多达学习俄语培…[2179]
 重庆恒祥广告有限公…[1915]
 重庆市南方阻燃电线…[2329]
 重庆舞美灯光音响有…[3072]
 重庆德鼎滤油机有限…[1857]
 重庆民生建材有限公…[2310]
 重庆集元科技有限公…[4090]
 重庆倍润商贸有限公…[1979]
 重庆腾达展览有限公…[3049]
 帝一网络创始人宣…--[3106]
 重庆vi设计在线祝…--[2703]
 重庆帝一网络书生…--[2821]
 馋嘴鸭的起伏和经…--[2960]
 机器感觉“卡”的…--[2886]
 ActionScript3打造…--[5628]
 在ASP文件中读取H…--[7204]
 vi设计经典案例--[63519]
 帅到掉渣-爆笑版勇…--[7015]
 一个女孩写的经典…--[6781]
没有相关文章
 (只显示最新10条。评论内容只代表网友观点,与本站立场无关!)
    没有任何评论
设为首页 | 加入收藏 | 联系站长 | 友情链接 | 版权申明 | 重庆网站建设 | 
版权所有: vi设计在线  © 2005-2018 网站备案序号:渝ICP备06003824号
技术支持:帝一网络(重庆网站建设专家)