三星弹性导航菜单再探详解
作者 佚名技术
来源 服务器技术
浏览
发布时间 2012-07-10
_root.forbidname = _parent._name; t = substring(_parent._name, 2, 1); this.ok = 1; if (this.dx>=20000 && _root["a"+t].pres == false) { _parent._x = this.oldx; _parent._y = this.oldy; _root.dr = false; _root["a"+t].dragging = false; _root.forbidname = _parent._name; _root.forbid = 0; _root["a"+t].gotoAndStop(1); } else { _root.dr = true; _root["a"+t].dragging = true; _parent._x = _root._xmouse; _parent._y = _root._ymouse; _root["a"+t]._x = _root._xmouse; _root["a"+t]._y = _root._ymouse; } } else { if (_root["a"+t].pres == false) { if (this.ok) { _parent._x = this.oldx; _parent._y = this.oldy; _root.dr = false; _root["a"+t].dragging = false; this.ok = 0; _root.forbidname = _parent._name; _root.forbid = 0; _root["a"+t].gotoAndStop(1); } } } } } 忘了说了,就是偷懒没有多写一段代码_creatEmptyMovieClip()我直接在主场景中建立了一个空的名叫li的mc存放画的线条源文件待会再传给大家吧,明白了思路我想不用原文件一样能重新弄出来 首先补充说说弹性的原理吧:) 看看下面的代码吧: 你看首先不是弹性运动,但是我想让场景中的mc变速运动 onClipEvent (load) { ax=0.5 vx=2 } onClipEvent (enterFrame) { vx += ax; _x += vx; } 上面的代码很简单,mc会不断加速运动,每次加速的数值由ax的量决定。 上面的理解了吧? 看过物理上的单摆运动吗?从最位移处到中点处加速度是不断的减小的,与此同时速度不断增大,不会忘记吧 ,呵呵,还应该记得,单摆运动的时候如果有阻力 振幅会不断的减小,就象我们的弹性运动! 对了,现在要做的就是改变上面代码的加速度,就象单摆运动的时候,过平衡位置 加速度变成反方向的,加速度也不断减小,怎么把上面的变量联系转化成代码呢?? 很简单,将加速度与距离平衡位置的距离联系,距离越大,加速度越大,于是我们得到: ax=(tx-_x)*k 这样就完全实现了单摆的模拟加速度,呵呵,要是这不明白我可没办法了哦:) tx是目标位置,也就是平衡位置!!单摆最终会停在平衡位置是因为阻力,我们这里添加 一个damp和起来就是下面的东东啦: onClipEvent (enterFrame) { ax = (tx-_x)*k; vx += ax; _x += vx; vx*=damp } 好了,差不多收工了吧,我的代码 首先tarx-this._x计算与目标点的距离乘k转化与加速度关联 这里由于我偷懒就没出现ax了,直接乘了 this.vx += (tarx-this._x)*k; this.vy += (tary-this._y)*k; // (tary-this._y)*k=ax相当于this.vy +=ay this.vx = this.vx*damp; this.vy = this.vy*damp; this._x+= this.vy 源文件 点击浏览该文件 更多疑问参与讨论: http://www.flash8.net/bbs/dispbbs.ASP?boardID=10&ID=71018&page=1 关键词:菜单 导航 |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |
你可能对下面的文章感兴趣
上一篇: FE 粒子系统LE(冒烟)下一篇: [AE电子书]龙女AE教程
关于三星弹性导航菜单再探详解的所有评论