江西广告网
标题:
制作别致的Flash圣诞贺卡(3)
[打印本页]
作者:
smilewei84
时间:
2009-3-1 14:27
标题:
制作别致的Flash圣诞贺卡(3)
三、Action Script控制
好了,现在最关键的步骤来了。先具体说一下这个效果的实现原理:我们先用目标点摆一个图案,然后在影片播放的时候动态生成一些星星,给这些星不同的目标点,让它们飞向各自的目标点,最后就组成我们摆好的图案了。怎样归定每颗星的目标点呢?我们可以在每个星的影片剪辑里设一个变量,在星生成的时候给这个变量赋值,然后在星运动时就可以用eval("z" num)的形式组合出这颗星的目标点的名字了(这也是为什么我们的目标点开始要那么命名的原因)。至于怎么让星飞过去的程序嘛,其实早就有了,记得广为流传的鼠标根随脚本么?这里只是将目标点由鼠标坐标处改成了我们自己的目标点而已。 明白了吧?那么你可以自己尝试着写啦。如果你还是觉得一头的雾水,请看下面的源码。关键地方已经有了详细的注释。 1.点击“action”影片剪辑,在Action面板中写入如下的代码: onClipEvent (load) { //在影片调入时初始化一些必要的变量 count = 1; //当前星星的编号 maxcount = 400; //影片中最大允许出现的星星个数 } onClipEvent (mouseMove) { if (count<maxcount and (Math.random()*5)<1) { //以一定机率生成星星及限定星星个数 duplicateMovieClip(star, "star" count, count); if (count<=60) { //星星数目仍小于目标点个数时 eval("star" count)._xscale = eval("star" count)._yscale=100; eval("star" count).active = true; eval("star" count).mytarget=count; file://设定目标 } else { //星星超过目标点个数的话生成的星星就不会动,而且比原来的小。 eval("star" count)._xscale = eval("star" count)._yscale=50; eval("star" count).active = false; } eval("star" count)._x = _xmouse; //星星出现在鼠标所在位置 eval("star" count)._y = _ymouse; count ; //记数器加 } } 2.点击“action”中的“star”,在Action面板中写入如下的代码: onClipEvent(enterFrame){ if(realactive){ //星星是否仍允许运动,realactive来源请看下面一条(3) xm=eval("_parent.z" mytarget)._x-_x; file://运动 ym=eval("_parent.z" mytarget)._y-_y; _x =xm/10; _y =ym/10; if(Math.abs(xm)<0.5 and Math.abs(ym)<0.5) realactive=false; //基本到达目标点后停止运动 } } 3.编辑“star”影片剪辑,插入ActionScript如下: realactive=active; 这样做的目的就是让星星在原地停留一会儿(也就是影片播放到40帧以后)再向目标点运动。 好了,大致的制作过程就是这些了。你还可以加入更多的效果使影片更加完善,比如:加入文字的动画效果(参看源文件),或是增加通过随机函数增加星星动作的随机性等等,一切你自己发挥啦。然后,在圣诞前夜,给心仪的MM发去这样的一张贺卡,然后,你就只管偷着乐吧!
源文件下载
欢迎光临 江西广告网 (http://bbs.jxadw.com/)
Powered by Discuz! X3.2