请FLASH的高手帮我解释一下~~!!

来源:百度知道 编辑:UC知道 时间:2024/06/30 08:06:32
加入AS代码:
Mouse.hide();
//隐藏原有鼠标
var Num = 10;
//鼠标跟随的数量
for (var i = 0; i<Num ; i++){
_root.attachMovie("mouse", "m"+i, i);
this["m"+i]._xscale = this["m"+i]._yscale=i/Num*100;
//鼠标的尺寸递增
this["m"+i]._alpha = (Num-i)/Num*100;
//鼠标的透明度递减
}
_root.onEnterFrame = function() {
this["m"+0]._x = _xmouse;
this["m"+0]._y = _ymouse;
for (var i = 1; i<Num ; i++){
this["m"+i]._x += ((this["m"+(i-1)]._x)-this["m"+i]._x)*0.5;
this["m"+i]._y += ((this["m"+(i-1)]._y)-this["m"+i]._y)*0.5;
}
};
要用最通俗易懂的语言啊?
this["m"+i]._x += ((this["m"+(i-1)]._x)-this["m"+i]._x)*0.5;
this["m"+i]._y += ((this["m"+(i-1)]._y)-this["m"+i]._y)*0.5;
主要是这两句不懂!!这是制作鼠标的代码,mouse是制作的影片剪辑~

主要实现的是缓动效果,就是让MC实例慢慢移到当前鼠标处
为了好理解,我说一下最简单的情况。让一个普通的MC跟随鼠标移动,命名为a
a._x=_xmouse;
a._y=_ymouse;
等价于以下两句
a._x=_xmouse-a._x+a._x;
a._y=_ymouse-a._x+a._x;
再换成
a._x=a._x+(_xmouse-a._x);
a._y=a._y+(_ymouse-a._y);
也就是说,MC的最终位置是MC开始的位置,加上当前鼠标和MC的距离。
以上实现的是马上移到当前鼠标处。让MC慢慢移到当前鼠标处,也说是不让MC一下子移动到当前鼠标处,
所以就可以写成如下形式:
a._x=a._x+(_xmouse-a._x)*0.5;
a._y=a._y+(_ymouse-a._y)*0.5;
当然0.5可以换成任何小于1大于0的数。
为了让MC最终移到当前鼠标处,程序借助了onEnterFrame循环把移动后的MC再和当前鼠标比较坐标,如果不同还是要移动MC,这就实现了缓动效果了。
以上实现的是一个MC实例的缓动,为了实现多个MC的缓动,把以上的当前鼠标换成建立的其他MC即可。也就是让一个实例跟随另一个实例,这就形成了一串的效果,但最后一个被其他实例跟随的MC实例跟随的是当前鼠标了。最终效果就是所有实例都跟随鼠标,不过是有先有后罢了。

this["m"+i]._x中的[]主要是引用MC实例,因为复制的实例名称是字符串"m"和数字i的组合。也可以写为如下:
this.eval("m"+i)._x
其实都是为了引用实例。