一个张力效果
作者 佚名技术
来源 服务器技术
浏览
发布时间 2012-07-11
点击浏览该文件 好了,对效果的分析: 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的版了。 关键词: |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |
你可能对下面的文章感兴趣
上一篇: 简单的检测鼠标是否有移动的类下一篇: 给FLASH初学者的几点建议
关于一个张力效果的所有评论