flash 放大镜代码解释onClipEvent (load){Mouse.hide();startDrag("",true);speed = 4;scalex = 200;scaley = 200;image._xscale = scalex;image._yscale = scaley;}onClipEvent (mouseDown){scalex = 500;scaley = 500;}onClipEvent (mouseUp){scalex = 200;sca

来源:学生作业帮助网 编辑:作业帮 时间:2024/05/05 17:23:11
flash 放大镜代码解释onClipEvent (load){Mouse.hide();startDrag(

flash 放大镜代码解释onClipEvent (load){Mouse.hide();startDrag("",true);speed = 4;scalex = 200;scaley = 200;image._xscale = scalex;image._yscale = scaley;}onClipEvent (mouseDown){scalex = 500;scaley = 500;}onClipEvent (mouseUp){scalex = 200;sca
flash 放大镜代码解释
onClipEvent (load)
{
Mouse.hide();
startDrag("",true);
speed = 4;
scalex = 200;
scaley = 200;
image._xscale = scalex;
image._yscale = scaley;
}
onClipEvent (mouseDown)
{
scalex = 500;
scaley = 500;
}
onClipEvent (mouseUp)
{
scalex = 200;
scaley = 200;
}
onClipEvent (enterFrame)
{
movex = (_root._xmouse - this._x) / speed;
overx = overx + movex;
this._x = this._x + Math.round(overx + movex);
movey = (_root._ymouse - this._y) / speed;
overy = overy + movey;
this._y = this._y + Math.round(overy + movey);
image._xscale = image._xscale + (scalex - image._xscale) / speed;
image._yscale = image._yscale + (scaley - image._yscale) / speed;
image._x = (_parent.image._x - this._x) * (image._width / _parent.image._width);
image._y = (_parent.image._y - this._y) * (image._height / _parent.image._height);
}
这段代码最后一个{}里面每句话的详细解释及这样做的原因,
时间轴有两层,第一层背景image,这是影片剪辑影片剪辑的代码,影片剪辑也有两层,第一层图片image,第二层一个圆形的遮罩层

flash 放大镜代码解释onClipEvent (load){Mouse.hide();startDrag("",true);speed = 4;scalex = 200;scaley = 200;image._xscale = scalex;image._yscale = scaley;}onClipEvent (mouseDown){scalex = 500;scaley = 500;}onClipEvent (mouseUp){scalex = 200;sca
注意我已经修改
时间轴有两层,第一层背景image,这是影片剪辑影片剪辑的代码,影片剪辑也有两层,第一层图onClipEvent (enterFrame)
{ //鼠标跟随,就是你的放大镜影片剪辑的坐标,跟着你鼠标坐标移动;
//这样代码可以起到缓冲作用,如果直接这样:this_x=_root_xmouse;this_y=_root_ymouxe;
这样就没有缓冲效果;
//哎呀,现在都用AS3了,你还用AS2,嘿嘿
movex = (_root._xmouse - this._x) / speed;
overx = overx + movex;
this._x = this._x + Math.round(overx + movex);
movey = (_root._ymouse - this._y) / speed;
overy = overy + movey;

this._y = this._y + Math.round(overy + movey);
//以下代码作用是你的放大镜随着你的鼠标移到哪里,哪里就出现放大效果;
//当然,也和上面一样不是一下子就放大,也是有点缓冲
image._xscale = image._xscale + (scalex - image._xscale) / speed;
image._yscale = image._yscale + (scaley - image._yscale) / speed;
//以下代码:当前显示容器就是你的影片剪辑中image的X坐标=(舞台image的X坐标-放大镜X坐标)*(当前显示容器image的宽度/舞台image的宽度);剩下一行,就不用解释了
//这样做的目的是:出现放大效果时,你的放大的地方,就是该放大的地方,因为如果没有这代码,image放大时,它的相对坐标会移动,即放大了不该放大的地方.
image._x = (_parent.image._x - this._x) * (image._width / _parent.image._width);
image._y = (_parent.image._y - this._y) * (image._height / _parent.image._height);
}
//最后:如果你想学FLash脚步语言,那就学AS3,因为AS3相对AS2很强大.
呵呵
假如两个image坐标都为0,0;假如放大的倍数为2.5
假如你这时放大镜的坐标为100,100,你应该放大的地方当然也是100,100
当放大时,你的代码image._width / _parent.image._width=2.5
影片剪辑里image的宽度和高度都放大500/200=2.5倍,
即放大后你应该放大的坐标变为100*2.5,100*2.5;但是你的放大镜此时的坐标还是100,100
所以,你必须让影片剪辑里image的坐标移动(-250,-250),也就是
(_parent.image._x - this._x) * (image._width / _parent.image._width)=-250
(_parent.image._y - this._y) * (image._height / _parent.image._height)=-250
嘿嘿i,这下分可以给我了吧