·您的位置: 首页 » 资源教程 » 创意设计 » Flash » 动态MC按钮的制作教程

动态MC按钮的制作教程

类别: Flash教程  评论数:0 总得分:0

  写个MC按钮的教程,实在不登大雅之堂~目的:帮助需要这方面知识,而不得其要的同行爱好者~
MX以后版本已经提供了组件,没有必要这样麻烦做这种按钮,不过,我们的目的是为了学习。

  本教程主要运用了flash的onClipEvent事件触发器~以及hitTest方法~color对象和智能剪辑~

  1. 创建两个MC

  第一个MC为动态文本(label),,设置如图A

  文字居中是为了让按钮文字看起来更美观
变量加了两个_parent关键字,在创建智能剪辑就可以省去为动态文本再赋值的麻烦
其它选项只是个人喜好~各位大可自行设置(不建议选中html选项)~

  创建第二个MC(group)

  有2帧,第一帧为按钮平时状态。第二帧为按钮按下状态..
分别在每帧的相同位置上画一个圆角的,长和高相同的长方体。并填充不同的颜色用以区分~
然后再新建一个层,将刚才创建的动态文本MC拖入这个层中。并起一个实例名为label;
再创建一个层,再拖动态文本MC到层中,与label相同叠。并起实例名为shadow。
这样,一共有3个层,其中2个层是放同一个动态文本MC,这2个层只有延长帧。另一个层有2个关键帧。图B

  2.创建一个button_sc,将group MC拖到时间轴上。

  3.在库中点选button_sc,点击鼠标右键(图C),

  然后选择菜单中的自定义组件选项。在对话框中连按两次"+"符号。加入两个参数,分别为:loic,label。其中,loic的类型为list(flash MX之后有boolean)。双击loic所对应的值这一项,填入"true""false"2项。然后确定。label取默认值就可以了。设置好后确定。(图E和图F)

  4.返回button_sc的编辑场景,选中按钮MC,写入下面语句:

  onClipEvent (load) { //影片加载后对需要用到的变量进行初始化,影片加载一次初始化一次. stop ();//group影片停止在第一帧. check = false; //判断鼠标左键是否按下用,初始化为假,即鼠标没有按下. _root.all_perss_check = true; //用以记录是否有按钮被按下.初始化为真.即没有按钮被按下. Label_x = label._x;//记录动态文本label的坐标. Label_y = label._y; } onClipEvent (mouseDown) { //鼠标按下事件.每点按下一次执行一次 if (hitTest(_root._xmouse, _root._ymouse, false)) { //判断鼠标是否跟按钮重叠, //在flash帮助(按F1)里详细说明, //注意,鼠标必须也按钮重叠时按下才能执行下面的语句. check = true;//鼠标已经按下. _root.all_perss_check = false;//已经有按钮被按下了.所以为假. } } onClipEvent (enterFrame) { //每秒都执行的事件(执行次数为帧频数) if(_parent.loic == "true"){ //判断loic(用以判断按钮是否被禁用,默认为"true"即没有被禁用)变量的值. //如果值等于字符串true则执行下面语句,注意,在flash MX中不需要带双引号,否则不能执行. if(hitTest(_root._xmouse,_root._ymouse,false) && _root.all_perss_check){ //判断,如果鼠标与按钮重叠,并且没有别的按钮被按下 LabelColor = new Color(label); //为动态文本框构造一个颜色容器 LabelColor.setRGB(0x0000FF); //设置文字变色.这一段的实现效果是,鼠标划过按钮.文字变色. }else{//否则.即鼠标没有与按钮重叠 LabelColor = new Color(label); LabelColor.setRGB(0x000000);//将文字颜色还原为黑色. } if (hitTest(_root._xmouse, _root._ymouse, false) && check){ //鼠标与按钮重叠,并且在按钮上按下了左键. label._x = Label_x + 1;//文字坐标移动1个象素.让文字有被按下的感觉 label._y = Label_y + 1; nextFrame ();//group MC跳到下一帧. } else {//鼠标没有与按钮重叠,或者没有在按钮上按下左键. label._x = Label_x;//文字坐标还原. label._y = Label_y; shadowcolor = new Color(shadow); shadowcolor.setRGB(0xECE9D8); //将实例名为shadow的动态文本框的颜色设置为按钮色(即第二帧所填的颜色) prevFrame ();//group MC跳到上一帧 } }else{//按钮被禁用了,这段语句用于创建一个阴影效果 labelcolor = new Color(label); labelcolor.setRGB(0xACA899); shadow._x = Label_x + 1; shadow._y = Label_y + 1; shadowcolor = new Color(shadow); shadowcolor.setRGB(0xFFFFFF); } } onClipEvent (mouseUp) {//鼠标左键松开(按下->松开)时执行 check = false;//鼠标没有被按下. _root.all_perss_check = true;//没有按钮被按下. }

  到这里,按钮已经可以工作了.但还不行.想使用按钮,必须加进代码.
将智能剪辑拖到场景中.设置好参数(记得不要设为禁用)否则不起作用的.然后选中按钮.写入下面语句

  onClipEvent (load) { Onperss = false; } onClipEvent (mouseDown) { if (hitTest(_root._xmouse, _root._ymouse, true)) { Onperss = true; } } onClipEvent (mouseUp) { if (hitTest(_root._xmouse, _root._ymouse, true) && Onperss && loic == "true") {//同样,如果是在flash MX中,不要带双引号. //要执行的代码就写在这里. //不过要注意.因为是写在MC上面,所以一定记要带上_root(或者_parent)来指定对象 getURL("http://www.webjx.com"); } else { Onperss = false; } }

  
如果想给按钮加上声音,可以加下面代码

  onClipEvent (load) { souCheck = false; } onClipEvent (mouseMove) { if (hitTest(_root._xmouse,_root._ymouse,true)) { if (!souCheck && _root.all_perss_check) { mysound = new Sound(); mysound.attachSound("buttonsound" + [Math.floor(Math.random() * 10)]); mysound.start(0,1); souCheck = true; } }else{ souCheck = false; } }

  需要注意的是,

  mysound.attachSound("buttonsound" + [Math.floor(Math.random () * 10)]);

  随机绑定库中10种声音的一种(必须在库中给声音作链接标识符才能有效).

  作品预览

« Full Screen »



  源文件中还有一个swf文件,是另一种按钮,做法基本一样.有兴趣的朋友可以想想.

  源文件下载



-= 资 源 教 程 =-
文 章 搜 索
关键词:
类型:
范围:
纯粹空间 softpure.com
Copyright © 2006-2008 暖阳制作 版权所有
QQ: 15242663 (拒绝闲聊)  Email: faisun@sina.com
 纯粹空间 - 韩国酷站|酷站欣赏|教程大全|资源下载|免费博客|美女壁纸|设计素材|技术论坛   Valid XHTML 1.0 Transitional
百度搜索 谷歌搜索 Alexa搜索 | 粤ICP备19116064号-1