快速业务通道

一个张力效果

作者 佚名技术 来源 服务器技术 浏览 发布时间 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 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号