快速业务通道

三星弹性导航菜单再探详解

作者 佚名技术 来源 服务器技术 浏览 发布时间 2012-07-10


浏览了许多老外的网站,发现最精彩之一的莫过于菜单的制作,由于其交互性强,所以
as在这大有用武之地,嗯,前几天忙死了,总算到了周末,把我本来要作为主页菜单的
一组菜单改了改,把它呈给大家,希望对你有帮助:)也希望各高手能多分享些宝贝给
小弟们啦,多多学习,这儿才会更加精彩嘛:)
其他的不多说了,先把东西拿上来吧,因为是我刚才改的,并且和我原来的设计有些
不同,所以难免有错误,高手指正啦!
http://file.flash8.net/attach/2003/03/15/394320-bu.swf
点击浏览附件
试验后发现与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 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

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号