百独托管7500 紫田网络超高转化播放器收cps[推荐]速盾CDN 免实名免备防屏蔽阿里云 爆款特卖9.9元封顶提升alexa、IP流量7Q5团队
【腾讯云】中小企福利专场【腾讯云】多款产品1折起高防 随时退换 好耶数据小飞国外网赚带你月入万元炎黄网络4H4G10M 99每月
香港带宽CN2/美国站群优惠中客数据中心 服务器租用联盟系统移动广告平台 中易企业专场腾讯云服务器2.5折九九数据 工信部正规资质
腾讯云新用户大礼包代金券高价收cpa注册量高价展示【腾讯云】2核2G/9.93起租服务器找45互联 随时退换阿里云 短信服务 验证秒达

鼠标效果系列教程之三——游动的鱼 [复制链接]
查看:535495 | 回复:19

5

主题

7694

帖子

9956

积分

落伍者(三羊开泰)

百变星君

Rank: 3Rank: 3

贡献
155
鲜花
0
注册时间
2003-2-14
发表于 2003-7-2 17:44:30 | |阅读模式 来自 中国上海
概述
有了上一节的基础,现在我们可以做一个更华丽的效果—追逐鼠标游动的鱼。如下所示。
Flash: http://www.eliadodica.hpg.com.br/bbsreset/shubiao/9.swf

打开Flash MX,建立影片,设置好场景大小、背景颜色和帧频。
鱼的制作
我们把鱼分成三个部分来制作:鱼头、鱼鳍和鱼身。
先来制作鱼头。新建个影片剪辑叫“鱼头”。如果对话框的扩展面板没打开,点击“高级选项”按钮打开它。在“链接”的选项中,勾选“为动作脚本导出”,在“标识符”一栏中,会自动出现“鱼头”这个名称。为了让大家分清楚影片剪辑在库中的名称和它的标识符的区别,我们把它改为“head”。注意,这个head就是影片剪辑“鱼头”的idName。将来我们用attachMovie语句从库中调用“鱼头”时,就要用到它。如图1

图1

进入符号编辑区,使用绘图工具绘制一个鱼头,可以使用椭圆工具先绘制一个椭圆,然后使用箭头工具对其进行调整,最后再用椭圆工具绘制两个眼睛。如图2

提示:使用箭头工具指向打散图形的边缘,当箭头尾部出现一个小圆弧时,按住鼠标左键拖动,就可以编辑图形的形状了。

图2

鱼头做好后,接下来制作鱼身。新建个影片剪辑名为“鱼身”。绘制出如下形状并设定一个渐变色填充。如图3

图3

我们也要给它设定一个idName。在库中右键点击鱼身符号,在弹出菜单中选“链接…”。接着在弹出的链接属性对话框中,在标识符栏里填入“body”。如图4

图4

最后来制作鱼鳍。再新建个影片剪辑叫鱼鳍,idName为“fin”。进入编辑区,在第一帧绘制出鱼鳍的形状。如图5

图5

分别在第15帧和第30帧按F6插入关键帧。我们要做鱼鳍来回扇动的动画。来到第15帧,用箭头工具编辑形状并用混色器面板调节一下颜色。最后如图6

图6

将第1帧和第15帧都设为形状渐变。
好,鱼儿三部分的制作就完成了。下面就是动作脚本的编写了。
在场景的第1帧,加入如下动作:
// 初始化鱼儿
N = 20; //鱼的长度
for (i=1; i<N; i++) {
if (i == 1) { //第1节是鱼头
attachMovie("head", "Pieza"+i, (N+1)-i);
} else if ((i == 4) || (i == 14)) { //第4和14节是2个鱼鳍
attachMovie("fin", "Pieza"+i, (N+1)-i);
} else { //其它的都是鱼身
attachMovie("body", "Pieza"+i, (N+1)-i);
}
//设置大小和透明度
this["Pieza"+i]._xscale = 100-3*i;
this["Pieza"+i]._yscale = 100-3*i;
this["Pieza"+i]._alpha = 100-((100/N)*i);
}


这里介绍一下attachMovie的用法:
myMovieClip.attachMovie( idName, newName, depth [, initObject] )
参数
idName 库中要附加到舞台上某影片剪辑的影片剪辑元件的链接名称。这个我们在前面已经反复强调了,相信大家还没忘吧?要把它和库中显示的元件名区别开,元件名只是个记号,编程时是用不到的。
newname 附加到该影片剪辑的影片剪辑实例的唯一名称。
depth 一个整数,指定影片所放位置的深度级别。
initObject 一个包含属性的对象,这些属性可用于填充新附加的影片剪辑。此参数使动态创建的影片剪辑能够接收剪辑参数。如果 initObject 不是对象,则将被忽略。initObject 的所有属性都会被拷贝到新实例中。构造函数可使用由 initObject 指定的属性。此参数是可选的,我们这里用不到它。
返回
无。
说明
方法;从库中取一个元件并将其附加到舞台上由 MovieClip 指定的影片中。使用 removeMovieClip 或 unloadMovie 动作或方法可删除用 attachMovie 附加的影片。

第2帧的动作脚本:
//此帧控制鱼的移动
R = 12; //调节移动速度的参数
//控制鱼头跟随鼠标移动
Pieza1._x+=(_xmouse-Pieza1._x)/R;
Pieza1._y+=(_ymouse-Pieza1._y)/R;
//控制鱼头转向鼠标的方向
Pieza1._rotation = 57.29578*Math.atan2(_ymouse-Pieza1._y,_xmouse-Pieza1._x);
//控制鱼身跟随鱼头
for (i=2; i<N; i++) {
this["Pieza"+i]._x+=(this["Pieza"+(i-1)]._x-this["Pieza"+i]._x)/2;
this["Pieza"+i]._y+=(this["Pieza"+(i-1)]._y-this["Pieza"+i]._y)/2;
this["Pieza"+i]._rotation=57.29578*Math.atan2(this["Pieza"+(i-1)]._y-this["Pieza"+i]._y,this["Pieza"+(i-1)]._x-this["Pieza"+i]._x);
}


关于跟随的语句,不用多作解释了吧。不过有的朋友可能对“+=”这个操作符不太熟悉。“A+=B”表示什么呢?它其实就等价于“A=A+B”。同理,“A-=B”就相当于“A=A-B”。
控制鱼的转向时,用到了一个数学对象:Math.atan2()。看一下它的用法:
Math.atan2(y, x)
参数
x 一个数字,指定点的 x 坐标。
y 一个数字,指定点的 y 坐标。
返回
一个数字。
说明
方法;以弧度为单位计算并返回 y/x 的反正切值。返回值表示相对直角三角形对角的角,其中 x 是临边边长,而 y 是对边边长。
简单的说,就是根据点的坐标来求角。但它返回的是个弧度值,我们还要把它转变成度数才能用到_rotation属性中。用下面这个公式来计算:
度数=弧度*180/3.14159265=弧度*57.29578

第3帧的action只有一句:
gotoAndPlay(2);

返回第2帧,做成一个循环,使鱼儿不停游动。
好,本例的制作就完成了。通过这一节的学习,我们又掌握了几个知识点:
一、 idName的设置。可以在创建符号时就设好,也可以给做好的符号添加。
二、 attachMovie的用法。
三、 利用两点坐标求角度:Math.atan2(y2-y1,x2-x1) 注意是y在前面哟。

源文件下载

更多教程见 http://jl.com.ru/bbs

[ Last edited by eurostar on 2003-12-31 at 12:05 AM ]
头像被屏蔽

15

主题

1万

帖子

1万

积分

名誉斑竹

电视民工·因为专业所以出色

Rank: 8Rank: 8

贡献
0
鲜花
1
注册时间
2002-2-13
发表于 2003-7-2 17:48:22 | 来自 中国湖南长沙
加分
精华
签名被屏蔽

5

主题

1万

帖子

1421

积分

落伍者(两全齐美)

Rank: 2

贡献
1019
鲜花
0
注册时间
2002-8-14
发表于 2003-7-2 17:48:33 | 来自 中国江西南昌
不错,好玩!
头像被屏蔽

0

主题

745

帖子

813

积分

落伍者(一心一意)

Rank: 1

贡献
0
鲜花
0
注册时间
2003-6-19
发表于 2003-7-2 17:49:46 | 来自 中国内蒙古呼和浩特
verygood~~~~
thx
签名被屏蔽

89

主题

1万

帖子

9296

积分

落伍者(三羊开泰)

Yes i love you

Rank: 3Rank: 3

贡献
787
鲜花
5
注册时间
2002-8-20
发表于 2003-7-2 17:53:01 | 来自 中国江西南昌
好东西,收了。
粉丝之家www.fansju.com
安钧璨惊传去世 助理:待安顿好对外宣布
http://www.fansju.com/news/h/201506/00003868.html
头像被屏蔽

0

主题

3万

帖子

4万

积分

落伍者(四季发财)

Rank: 4

贡献
12
鲜花
0
注册时间
2003-2-14
发表于 2003-7-2 17:53:29 | 来自 中国福建泉州
好东西
签名被屏蔽
头像被屏蔽

0

主题

41

帖子

45

积分

落伍者(一心一意)

Rank: 1

贡献
0
鲜花
0
注册时间
2003-2-14
发表于 2003-7-3 10:45:24 | 来自 中国广东佛山
Thanks!

1

主题

5143

帖子

3555

积分

落伍者(两全齐美)

茶烟观色

Rank: 2

贡献
60
鲜花
0
注册时间
2002-10-31
发表于 2003-7-3 10:48:18 | 来自 中国广西
高手~~~~~
头像被屏蔽

0

主题

2624

帖子

2898

积分

落伍者(两全齐美)

亲亲我吧爱我吧

Rank: 2

贡献
0
鲜花
0
注册时间
2002-9-20
发表于 2003-7-3 10:59:21 | 来自 中国河南新乡
Very good
签名被屏蔽
头像被屏蔽

1

主题

8760

帖子

8428

积分

落伍者(三羊开泰)

九一帮帮主老公

Rank: 3Rank: 3

贡献
0
鲜花
0
注册时间
2001-9-29
发表于 2003-7-15 19:11:24 | 来自 中国河南郑州
好东西
签名被屏蔽
论坛客服/商务合作/投诉举报:2171544 (QQ)
落伍者创建于2001/03/14,本站内容均为会员发表,并不代表落伍立场!
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论!
落伍官方微信:2030286 邮箱:(djfsys@gmail.com|tech@im286.com)
© 2001-2014

浙公网安备 33060302000191号

浙ICP备11034705号 BBS专项电子公告通信管[2010]226号

  落伍法律顾问: ITlaw-庄毅雄

手机版|找回帐号|不能发帖?|Archiver|落伍者

GMT+8, 2024-5-19 22:50 , Processed in 0.194892 second(s), 37 queries , Gzip On.

返回顶部