打印

[AS3] 仿苹果菜单,大家看看有什么不对

请和这个地址http://www.webjx.com/htmldata/2007-03-31/1175277297.html的苹果菜单对比一下,给的改进意见,这个菜单困扰我很久了,怎么做都做不像,只好来求救,希望大家帮我看看,到底问题出现在哪里,是算法不对,还是数值设置有问题。谢谢。
下面是AS3 代码

var iconSum=5;
var iconIns:Array=new Array(iconSum);
var deltaX:Number;

loader();//装载图标

function loader()
{
       for(var i:Number=0;i<iconSum;i++)
       {
              iconIns[i]=new icon();
              addChild(iconIns[i]);
              iconIns[i].nameLabel.text=i;
              //iconIns[i].addEventListener(MouseEvent.MOUSE_MOVE,tracei);
              
              iconIns[i].addEventListener(MouseEvent.MOUSE_MOVE,scaler);
              iconIns[i].addEventListener(MouseEvent.ROLL_OUT,reset);
              iconIns[i].x=stage.stageWidth/2-50*iconSum/2+i*50+25;
              
              trace(iconIns[i].x);
              iconIns[i].y=stage.stageHeight/2;
       }
}

function scaler(e:Event)//缩放每个图片,并重新安排x坐标
{
       for(var i:Number=0;i<iconSum;i++)
       {
              iconIns[i].scaleX=1+100/(Math.abs(mouseX-iconIns[i].x)+30);
              iconIns[i].scaleY=iconIns[i].scaleX;
              
       }
       var j:Number=e.target.nameLabel.text;
              trace("j=",j);
              
              if(j==0)
              {
                     //iconIns[0].x=iconIns[2].x-0.5*(mouseX-(stage.stageWidth/2-100*iconSum/2+0*100+50));
                     iconIns[1].x=iconIns[0].x+iconIns[0].width/2+iconIns[1].width/2;
                     iconIns[2].x=iconIns[1].x+iconIns[1].width/2+iconIns[2].width/2;
                     iconIns[3].x=iconIns[2].x+iconIns[2].width/2+iconIns[3].width/2;
                     iconIns[4].x=iconIns[3].x+iconIns[3].width/2+iconIns[4].width/2;
              }
              if(j==1)
              {
                     //iconIns[1].x=iconIns[2].x-0.5*(mouseX-(stage.stageWidth/2-100*iconSum/2+1*100+50));
                     iconIns[0].x=iconIns[1].x-iconIns[1].width/2-iconIns[0].width/2;
                     iconIns[2].x=iconIns[1].x+iconIns[1].width/2+iconIns[2].width/2;
                     iconIns[3].x=iconIns[2].x+iconIns[2].width/2+iconIns[3].width/2;
                     iconIns[4].x=iconIns[3].x+iconIns[3].width/2+iconIns[4].width/2;
              }
              if(j==2)
              {
                     //iconIns[2].x=iconIns[2].x-0.5*(mouseX-(stage.stageWidth/2-100*iconSum/2+2*100+50));
                     iconIns[0].x=iconIns[1].x-iconIns[1].width/2-iconIns[0].width/2;
                     iconIns[1].x=iconIns[2].x-iconIns[2].width/2-iconIns[1].width/2;
                     iconIns[3].x=iconIns[2].x+iconIns[2].width/2+iconIns[3].width/2;
                     iconIns[4].x=iconIns[3].x+iconIns[3].width/2+iconIns[4].width/2;
              }
              if(j==3)
              {
                     //iconIns[3].x=iconIns[2].x-0.5*(mouseX-(stage.stageWidth/2-100*iconSum/2+3*100+50));
                     iconIns[0].x=iconIns[1].x-iconIns[1].width/2-iconIns[0].width/2;
                     iconIns[1].x=iconIns[2].x-iconIns[2].width/2-iconIns[1].width/2;
                     iconIns[2].x=iconIns[3].x-iconIns[3].width/2-iconIns[2].width/2;
                     iconIns[4].x=iconIns[3].x+iconIns[3].width/2+iconIns[4].width/2;
              }
              if(j==4)
              {
                     //iconIns[4].x=iconIns[2].x-0.5*(mouseX-(stage.stageWidth/2-100*iconSum/2+4*100+50));
                     iconIns[0].x=iconIns[1].x-iconIns[1].width/2-iconIns[0].width/2;
                     iconIns[1].x=iconIns[2].x-iconIns[2].width/2-iconIns[1].width/2;
                     iconIns[2].x=iconIns[3].x-iconIns[3].width/2-iconIns[2].width/2;
                     iconIns[3].x=iconIns[4].x-iconIns[4].width/2-iconIns[3].width/2;
                     
              }
       
}

function reset(e:Event)
{
       
       for(var i:Number=0;i<iconSum;i++)
              {
                     iconIns[i].x=stage.stageWidth/2-50*iconSum/2+i*50+25;
                     iconIns[i].scaleX=iconIns[i].scaleY=1;
              }
       
       
}










演示文件:
源文件:

[ 本帖最后由 seacloud 于 2008-6-23 13:53 编辑 ]
附件: 您所在的用户组无法下载或查看附件,您需要注册/登录后才能查看!
这可不是一点不对啊.....
首先人家原来那个是,不管怎么样整体都是显示在舞的中间的!
还有动作也差得太远了哦...
再加油...
楼主加油啊,我是初学,这个对我来说是非常好的学习机会。
继续完善下