三星弹性导航菜单再探详解
作者 佚名技术
来源 服务器技术
浏览
发布时间 2012-07-10
浏览了许多老外的网站,发现最精彩之一的莫过于菜单的制作,由于其交互性强,所以 as在这大有用武之地,嗯,前几天忙死了,总算到了周末,把我本来要作为主页菜单的 一组菜单改了改,把它呈给大家,希望对你有帮助:)也希望各高手能多分享些宝贝给 小弟们啦,多多学习,这儿才会更加精彩嘛:) 其他的不多说了,先把东西拿上来吧,因为是我刚才改的,并且和我原来的设计有些 不同,所以难免有错误,高手指正啦! 点击浏览附件 试验后发现与tupling的菜单有些差异吧,加入了链式的运动,然后鼠标吸附的效果只在一定的范围内起作用。 嗯,我还是喜欢跟大家说说的我思路,首先要实现链式的运动,其实很简单 当一个按钮被按下拖动的时候,其他的按钮与他保持一定的距离,并呈一定的角度, 要实现这个也很简单,用循环,怎么用呢,稍微要动点脑筋了,呵呵,人的思维与电脑 到底式不一样的,我给按钮们命名了"a0","a1","a2"....通过名字可以联系一相应的数字 0,1,2,3……分成两种可能进行讨论!!一名字在中间的可以通过+或-来实现控制其周围的按钮间的联系,由于具体有许多技巧见下面的代码: stop(); fscommand("allowscale", false); //下面定义了鼠标按下和释放时启动的事件,this.dragging 是用来说明现在该按钮是被按下的,主要是为了防止你的鼠标控制按钮运动与计算机控制的运动相冲突。_root.dr 是用来说明现在在主场景中有按钮被按下了 function doDrag() { this.startDrag(); this.dragging = true; _root.dr = true; this.pres = true; this.gotoAndStop(2); } function noDrag() { stopDrag(); this.dragging = false; _root.dr = false; this.pres = false; this.gotoAndStop(1); } //鼠标经过时改换图标 function showme() { this.gotoAndStop(2); } //下面是主要控制运动的地方 function makemove() { //分了几种情况,一种是主场景中没有按钮被按下了,这个时候通过记录一个原始的位置,由随机函数产生随机运动,然后回复到原始的位置 if (!_root.dr) { if (random(80) == 1) {//时不时让他动一动,就算你不动他:) var s = random(6); rando((_root["a"+s].oldx), _root["a"+s].oldy); _root["a"+s]._x = six; _root["a"+s]._y = siy; } //下面的是弹性运动的公式,我现在只简单说说k是用来分割现在位置与目标点之间距离 随着dx的减小vx继续增加,当超过目标点的时候dx变成负数,这样vx又逐渐减小这样又返回运动,为了不使来回无休止的摆动,加入damp减速 var dx = this.oldx-this._x; var dy = this.oldy-this._y; this.vx += dx*k; this.vy += dy*k; this._x = this._x+this.vx; this._y = this._y+this.vy; this.vx = this.vx*damp; this.vy = this.vy*damp; //这里分出一种情况,如果主场景知道有按钮被按下,但被按的不是现在的按钮 } else if (!this.dragging && _root.dr) { //make sure there will not be opposit to formal design mytxt = new String(this._name); namenumber = Number(mytxt.charAt(1)); //下面是区分上面我说的数字的两种情况 0,5以外的情况 if (namenumber != 0 && namenumber != 5) { var xdis = this._x-_root["a"+(namenumber+1)]._x; var ydis = this._y-_root["a"+(namenumber+1)]._y; var ang = Math.atan2(ydis, xdis); //设计一个目标,距离自己为90向临近的按钮靠近!!包括自己前面的和后面的!!!! var tarx = _root["a"+(namenumber+1)]._x+Math.cos(ang)*90; var tary = _root["a"+(namenumber+1)]._y+Math.sin(ang)*90 |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |
你可能对下面的文章感兴趣
上一篇: FE 粒子系统LE(冒烟)下一篇: [AE电子书]龙女AE教程
关于三星弹性导航菜单再探详解的所有评论