分享
 
 
 

动态MC按钮的制作教程

王朝other·作者佚名  2006-11-24
窄屏简体版  字體: |||超大  

写个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种声音的一种(必须在库中给声音作链接标识符才能有效).

作品预览

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

源文件下载

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有