论坛交流
首页办公自动化| 网页制作| 平面设计| 动画制作| 数据库开发| 程序设计| 全部视频教程
应用视频: Windows | Word2007 | Excel2007 | PowerPoint2007 | Dreamweaver 8 | Fireworks 8 | Flash 8 | Photoshop cs | CorelDraw 12
编程视频: C语言视频教程 | HTML | Div+Css布局 | Javascript | Access数据库 | Asp | Sql Server数据库Asp.net  | Flash AS
当前位置 > 文字教程 > Flash教程
Tag:flash cs,flash 8,鼠绘,as,手绘,工具,文字,loading,入门,初学,mc,影片剪辑,声音,mtv,游戏,引导,遮罩,菜单,补间,广告条,时钟,视频教程

一个张力效果

文章类别:Flash | 发表日期:2008-9-21 19:20:47

   点击浏览该文件
好了,对效果的分析:
1.各个圆圈都会有一种远离鼠标的效果,当鼠标接近它们时,反而会离开鼠标,鼠标never touch them!!!  
2.当鼠标移离圆圈时,圆圈始终会有一种回到原位置的趋势.(注重这两个效果是对所有圆圈都有的,只是距鼠标远的话不明显) 简单说一下:
先是建一个圆形MC啦,拖到主场景中,第它上面写如下代码:
onClipEvent(load){
xoo=_x; //xoo,yoo是记录圆圈最原始的位置,也就是我们拖放位置.
yoo=_y;
}
onClipEvent(enterFrame){
xo=_x; //xo,yo是记录当前帧的圆圈的位置(我觉得还有一种解释...呆会说
yo=_y;
x=_root._xmouse; //这是鼠标的位置.
y=_root._ymouse;
a=x-xo;
b=y-yo;
r=Math.sqrt(a*a+b*b); //不用说了吧,勾股定理,也就是鼠标和当前圆圈的距离. //现在我们知道了圆圈的当前位置,鼠标的当前位置,和它们间的距离,那么接下来就计算圆圈的下一个位置了。 fx=this._x-(a/r)*500/r; //仔细揣摩这个公式,它产生的效果就是使圆圈"离开"鼠标,
fy=this._y-(b/r)*500/r; //下面解释. vx=(xoo-xo)/2;  //这个公式就是使圆圈有回到原位置上的趋势 : )
vy=(yoo-yo)/2; _x=fx+vx; //把上面那两个公式合在一起....
_y=fy+vy; } 好了,现在说一下我对fx,fy这两个公式的想法.
fx=this._x-(a/r)*500/r;
当然,a,b,r 实际上我们可以看作是一个直角三角形的三条边,r是斜边啦.那么a/r实际上就是cos D (我们设想D就是这个三角形的一个邻角了),好了,也就是说cosD*500/r,大家想到什么没有?再改一下,令T=500/r,也就是cos D*T.好了,你肯定想到了,我们联想到三角函数中,想象一下坐标系中有一个以 T 为半径的圆,那么 cos D*T其实就是这个角度在这个圆下面的横坐标量了(有点解释不清了,呵呵).
大家其实不必太在意a/r 这个东东,它记录的只是圆圈和鼠标连线所成的角度的余炫(我们很轻易联想到cos这个东东很经常用来计算圆上某一点的横坐标量),
我们看一下,500/r 这个东东,按照上面的理解,我们把它看成是半径,半径?一般应该是个固定的某个值才对啊——没错了,你其实可以把它改成一个固定值(比如100),你将看到的效果就是,不管圆圈离鼠标多远,鼠标都会产生离开鼠标的效果 ,也就是这个效果和距离没有关系了。所以写成500/r,可以产生r越大(距离越远),cos(a/r)*500/r越小,也就是在横坐标上的增量越小的效果。
fy 是相同的道理的。
关于xo,yo,我对 xo=_x,yo=_y的理解是记录当前帧的位置,那么后面的this._x和最后的_x就应该是代表下帧的位置了。
还是我还有一种理解,就是xo=_x,yo=_y用来记录的是前一帧的位置,而后面的this._x和最后的_x是用来计算当前帧的。
我想前一种理解才应该是对的。
附上源文件:
点击浏览该文件
这是flashmx 2004版的,因为源文件并不复杂,所以不传mx的版了。
视频教程列表
文章教程搜索
 
Flash推荐教程
Flash热门教程
看全部视频教程
购买方式/价格
购买视频教程: 咨询客服
tel:15972130058