昨天看了一个高手(反正都比我高)写的关于“梵天”网站上的始终指向鼠标的箭头的制作方法。可惜源文件是使用的FLASH 2004的我用的MX打不开……而且我刚学了几个月,菜的很,里面的很多指令我都看不动。所以我自己用了一早上的时间自己用MX做了一个相对简单的相同的效果。让和我一样菜的闪鸟也乐一下。
开始了(第一次讲课,紧张中……)
新建一个mc元件“箭头”
进入“箭头”元件的编辑。在元件的中心再画一个方向水平向右的箭头,然后选中该图形,F8,转换为新的影片剪辑,命名jt(其实该元件可以任意命名,不影响使用,只是远见实力的名称才影响使用。),然后把刚刚转化元件在“箭头内的实例名称命名为“jt”,alpha属性(即透明度)设置为0 。再选中第二帧,F5,增加一个延续帧。
***注重,所有操作始终是在元件“箭头”内,不对主场景进行任何编辑,这样有利于以后的维护和元件的再利用。
在元件“箭头”内新建一个图层,命名为as。在as的第二帧按F7,转化为空白要害帧。
开始写程序。
在as图层的第一帧写如下程序:
dy=jt._y-_ymouse;
dx=_xmouse-jt._x; //在flash的平面坐标系中,X轴坐标于数学坐标一样,向右递增 。Y坐标相 反,向下递增。所以这两个求鼠标与元件坐标差的 公式书须相反。
tan=function(y,x){
return Math.atan2(y,x)*180/Math.PI}; //自定义一个函数,该函数通过给出 参数Y,X 求出夹角,并以角度制度表示。
i=i+1;
写AS图层第2帧的程序:
jiao=tan(dy.dx); //利用刚刚在第一帧自定义的函数,计算出鼠标与元件jt (即画出箭头)的夹角。
duplicateMovieClip(jt,jt+i,i); //复制一个jt,并命名为jt+i(既jt1),深度i。
setProperty(jt+i,_alpha,100); //把刚才复制出的jt+i的透明度设置为100,就是不透明阿。
因为是复制,所以也继续了原来元件实例的属性--透明度0。
不修改的话还是看不到。
setProperty(jt+i,_rotation,-jiao); //类似于上一个命令.不同的是修改的角度,减去了刚 才已经计算出的和鼠标的角度差.
FLASH AS中的角度和数学的不同,为逆时针为加.所有用-而不是+.
if(i=2){i=0}; //限制了复制的数量.
gotoAndPlay(1); //假如不使用此语句可能会有跳帧感觉.
整理一下, 直接复制就可以用了.
第一帧:
dy=jt._y-_ymouse;
dx=_xmouse-jt._x;
tan=function(y,x){
return Math.atan2(y,x)*180/Math.PI};
i=i+1;
第二帧:
jiao=int(tan(dy,dx));
duplicateMovieClip(jt,jt+i,i);
setProperty(jt+i,_alpha,100);
setProperty(jt+i,_rotation,-jiao)
if(i=2){i=0};
gotoAndPlay(1);
终于完成了,真不幸啊,刚才写到一半的时候忽然停电……导致了……5555
行了,把“箭头”拖到主场景上,多拖上几个去也没有问题。因为所有的AS都写在元件中,没有写在ROOT里的,所以也可以用到其他的FLA文件中。
见笑了,这个效果的制作有很大的偷懒的嫌疑,也是不得以而为之,小弟实在是有点菜。
见笑。
点击浏览该文件