本页面由 Flash 保存计划 从 Internet Archive 存档还原 · 快照 2004-12-09 · 原址 http://www2.flash8.net/teach/369.htm ← Flash 保存计划
 
很逼真的鼠标跟随的鱼的做法讲解
作者:AOL 上传人:AOL    
时间: 2003年5月12  类型: 原创  
收藏 发送 评论 <%=votevote%>打印 字体选择:   

AOL用的是flash MX,所以以下是flash MX的图示,这个效果在flash 5中作法一样。
1.现立一个新的动画,将舞台设为384*384 pixels;backgroud颜色为#000066;framerate为48fps.
2.按ctrl+f8建立一个名为Cabeza的Movie clip(以后简称mc),画好鱼头。如图。
3.依上建立一个名为Aletas的mc表示鱼鳍,一个Espina的mc表示鱼身和鱼尾。如图。

鱼身和鱼尾

鱼鳍

4.最有技巧性的一步:用ctrl+L把资料库调出来,可以看到刚才建的那三个mc在这里。用右键分别点击这些mc,选择linkage这一项,打开linkage property属性面板,在Indentifine项中键入与该mc同名的链接词。复选框选择第一项和第四项。
如图。



5.回到主场景。分别在第一至第三帧加入如下actionscript(以后简称AS)

//---------------------------------------------------------
//这是第一帧的as.
//--------------------------------------------------------

_quality="MEDIUM"; // 选择动画质量适中,这样动画会运动得更快。
// 以下是各个部分的参数,你可以自己调一下数据会更清楚。
N = 20; // 鱼身的长度,也是expina有多少片.
R = 12; // 鱼头跟鼠标的速度。
C = 2; // 鱼身的连接速度,应该是这样表达吧,跟R也有关系。
A = 2; //鱼鳍片数。
// 以下参数供参考,可你让你更明白:
// ( N=20, R=12, C=2, A=2 )
// ( N=30, R=12, C=1.5, A=-20 )
// ( N=25, R=12, C=1.2, A=10 )
// ( N=40, R=12, C=2.5, A=-4 )
// ( N=40, R=12, C=2.2, A=2 )

// 定义两个数组,表示坐标。
var x = new Array();
var y = new Array();

// 初始化
for (i=0;i<N;i++) { x[i] = 0; y[i] = 0; }

// 构造一只鱼
for (i=1;i<N;i++) {
// 先造头,嘿嘿,说得有点儿怪(AOL摸了摸头)。
if (i==1) {
attachMovie("Cabeza", "Pieza"+i, N+1-i);
// 我们把两片鱼鳍放在鱼身的第四个和第十四个位置,你也可以选择放哪。
} else if ( (i==4) || (i==14) ) {
attachMovie("Aletas", "Pieza"+i, N+1-i);
// 剩下的位置留给鱼身。
} else {
attachMovie("Espina", "Pieza"+i, N+1-i);
}
this["Pieza"+i]._x = 142+x[i-1];
this["Pieza"+i]._y = 142+y[i-1];
//减小一点儿体积,增强鱼的透明度。
this["Pieza"+i]._xscale = 102+A*(1-i);
this["Pieza"+i]._yscale = 102+A*(1-i);
this["Pieza"+i]._alpha = 100-(100/N)*i;
}

//--------------------------------------------
//这是第二帧的as.
//这是鱼怎么移动的帧。
//--------------------------------------------


// 鱼头跟着鼠标动
x[0] = x[0]+(_xmouse-x[0]-142)/R;
y[0] = y[0]+(_ymouse-y[0]-142)/R;

// 其它的部分跟着动
for (i=1;i<N;i++) {
x[i] = x[i]+(x[i-1]-x[i])/C;
y[i] = y[i]+(y[i-1]-y[i])/C;
}

// 移动后的鱼的属性
for (i=1;i<N;i++) {
// 鱼的各部分所在的新位置
this["Pieza"+i]._x = 142+(x[i-1]+x[i])/2;
this["Pieza"+i]._y = 142+(y[i-1]+y[i])/2;;
// 计算鱼的转折角度
this["Pieza"+i]._rotation = 57.295778*Math.atan2((y[i]-y[i-1]),(x[i]-x[i-1]));
}


//--------------------------------
//这是第三帧的as。
//回到第二帧,继续跟鼠标。
//--------------------------------
gotoAndPlay (2);

按ctrl+enter测试,搞 定。

责任编辑:古墓
上一篇: 利用PHOTOSHOP帮助我们在FLASH中实现动态模 下一篇: Fireworks制作光泽按钮一例
 
鼠标跟随之粒子扩散效果
鱼缸水泡效果
很简单的线条跟随
盯着鼠标的眼睛
鼠标跟随的蜡烛光线照明的朦胧效果
导航菜单(之)跟随鼠标篇
一款鼠标跟随
简单的检测鼠标是否有移动的类
关于鼠标跟随及鼠标隐藏的AS实现(
RPG游戏中常用的鼠标控制
制作鼠标跟随动画
关于按钮