昨天写了一下就是里面的没算出来关于那个函数你自己优化下.
复制内容到剪贴板
代码:
var arrmc:Array=[mc0,mc1,mc2,mc3,mc4];
//权重比例
var key:Array=[1.4,1,0.8,0.7,0.6];
var thismc:MovieClip=this;
var small:Number=100;//默认的宽度
for(var i:Number=0;i<arrmc.length;i++){
var tmpmc:MovieClip=arrmc[i];
tmpmc.id=i;
//记录初始位置
tmpmc.basex=tmpmc._x;
tmpmc.onRollOver=function(){
thismc.rolloverHandle(this.id);
}
tmpmc.onRollOut=function(){
thismc.rolloutHandle(this.id);
}
}
//RollOverHandle
function rolloverHandle(id:Number):Void{
//从中间向2边开始扩散
for(var i:Number=0;i<arrmc.length;i++){
var tmpmc:MovieClip=arrmc[i];
var dis:Number=i-id;
Jmove(tmpmc,small*key[Math.abs(dis)],getDis(i,dis));
}
}
function getDis(id:Number,n:Number):Number{
var tar:Number=0;
n>=0?tar=1:tar=-1;
trace(arrmc[id].basex);
return arrmc[id].basex+tar*Count(Math.abs(n));
}
function Count(n:Number):Number{
var s:Number=0;
if(n==0){
s=0;
}else if(n==1){
s=0.2;
}else if(n==2){
s=0.1;
}else if(n==3){
s=-0.15;
}else if(n==4){
s=-0.5
}
return s*(small);
}
//RollOutHandle
function rolloutHandle(id:Number):Void{
for(var i:Number=0;i<arrmc.length;i++){
Jmove(arrmc[i],100,arrmc[i].basex);
}
}
//公用函数
function Jmove(mc:MovieClip,towidth:Number,tox:Number):Void{
delete mc.onEnterFrame;
var tmpmc:MovieClip=this;
var basewidth:Number=mc._width;
var tmpdes:Number=towidth-basewidth;
if(tox==undefined || tox==NaN){
tox=mc._x;
}
var tmpdesx:Number=tox-mc._x;
mc.onEnterFrame=function(){
tmpdes/=2;
tmpdesx/=2;
this._width=towidth-tmpdes;
this._x=tox-tmpdesx;
if(Math.abs(tmpdes)<0.5 && Math.abs(tmpdesx)<0.5){
this._width=towidth;
this._x=tox;
delete this.onEnterFrame;
}
}
}这个例子Count函数你自己优化下.自己没算出来怎么算的