Flash雪花脚本的编写
- 格式:docx
- 大小:16.33 KB
- 文档页数:2
Action Script 3.0 练习雪花飘落动画在Flash影片中,如需要使一个类的对象实例在影片中显示,可为对象实例使用stage.addChild()方法。
如需要删除一个已显示对象,则可以使用stage.removeChild()方法。
本练习将使用stage.addChild()方法制作一个雪花飘落的动画,如图6-2所示。
图6-2 雪花飘落动画在显示和删除对象时,还可以使用stage.addChildAt()方法和stage.removeChildAt()分别为对象添加层次和移除固定层次的对象。
(1)在Flash中新建影片文件“snow.fla”,执行【文件】|【导入】|【导入到库】命令,导入矢量素材“resource.ai”如图6-3所示。
图6-3 导入矢量素材(2)新建影片剪辑元件“bgimg”,将图形元件“背景_0”拖动到元件中,并将元件实例化为bgimg,用相同的方法创建雪人和雪花的元件,如下所示。
(3)按F9快捷键,编写ActionScript代码,分别将背景和两个雪人添加到影片中,如下所示。
var _bgimg:bgimg=new bgimg();//将背景图像bgimg实例化stage.addChild (_bgimg);//定义背景图像在影片中可见var _sy:smallyeti=new smallyeti();//将小雪人图像smallyeti实例化_sy.x=380;//定义对象的横坐标_sy.y=320;//定义对象的纵坐标stage.addChild (_sy);//定义对象在影片中可见var _ly:yeti=new yeti();//将雪人图像yeti实例化_ly.x=430;//定义对象的横坐标_ly.y=300;//定义对象的纵坐标stage.addChild (_ly);//定义对象在影片中可见(4)声明一个变量i,用于计算雪花的数量,并为影片添加监听事件,控制雪花的生成,如下所示。
用flash制作雪花动画步骤1.新建一个空白的FLASH文档,背景设置为黑色。
2.按Ctrl+F8创建一个名为雪的图形元件。
3.在雪元件中,选择刷子工具,把填充颜色设置为白色,选好刷子的形状和大小,舞台的中心(也就是+字号那里)画一个小小的圆作为雪花。
4.按Ctrl+F8创建一个名为雪花的影片剪辑元件,在元件中,按Ctrl+L打开库,从中把雪元件拖到舞台上,这里雪花元件中的图层1第1帧就是刚才做的雪了,按下引导层安钮创建一个引导层,用铅笔工具工出一条线。
在图层1第1帧把雪花的中心对准引导层的开端,也就是上头,再在第60帧插入关键帧,在引导层第60帧插入帧,这里点下图层1第60帧,把这一帧的雪花往下移,移到引导层的最下端,同样把中心对齐。
这时在图层1第1帧到60帧间任意一帧中右击,选择创建补间动画。
在图层1第45帧右击,插入关键帧,点击一下图层1第60帧,再点击下这一帧中的雪花,在属性面板中选择颜色里的Alpha,把它设置为0%。
5.用同样的方法再创建多几个雪花的影片剪辑,记住,在不同的影片剪辑中所要的引导线要不同,雪花也要以适当调整下大小。
6.回到场景中,按Ctrl+L打开库,然后在图层1中把刚才做好的雪花影片拖到场景中。
7.新建一个图层2,在图层2第10帧插入关键帧,按图层1的方法往场景中拖雪花,再新建一个图层3,在图层3第20帧插入关键帧,用同样的方法往场景中拖雪花(依次类推,你想要多建几个层也行,我这里只建3个)。
最后在图层1第20帧插入帧,在图层2第20帧也插入帧,然后在图层3第20帧的动作面板中加入代码stop();8.这样,下雪的过程就做完了,再来,导入一张背景图吧,再新建一个图层,命名为背景图,把图层拖到所有图层下面,也就是最下面,然后选把“文件——导入——导入到舞台”导入一张雪景图,把图片的大小改为500*400,X轴Y轴的位置都为0。
然后在第20帧插入帧。
利用Flash编程实现“下雪”特效方法研究摘要:随着Flash动画的盛行,引起社会对Flash技术的广泛关注,而如何学好这一技术,成为广大爱好者的一个难题。
通过使用Flash 编程技术实现“下雪”这一实例,详细介绍利用Flash编程实现动画特效的方法。
关键词:Flash编程;ActionScript脚本语句;影片剪辑;Flash 实例0引言Flash是一款非常优秀的矢量动画制作软件,它以流式控制技术和矢量技术为核心,广泛应用于交互式动画、网页动画等的设计中,制作出的动画短小精悍、互动性强、兼容性好,因此,受到广大动画爱好者的青睐。
目前,网络上流行的优秀Flash动画非常多,提供给用户学习的平台也非常广阔,这大大激发了Flash动画爱好者的学习兴趣。
在Flash学习中,编程技术扮演着非常重要的角色,而如何学好这一技术成为广大爱好者关注的一个热点。
1Flash编程在Flash动画设计中,Flash编程起着非常重要的作用。
Flash编程指的是利用Flash内置的ActionScript脚本语句进行程序设计,以实现一些特殊的动画效果。
ActionScript脚本语句是一种编程语言,使用该语言可以向Flash文档中添加复杂的交互功能,对动画进行高级的逻辑控制,从而帮助用户按照自己的想法实现各种复杂的场景,轻松做出各种绚丽的Flash特效。
Flash编程需要在动作面板中完成,动作面板有两种模式:标准模式和专家模式。
在标准模式下,打开左边的目录窗口双击相应的语句,右边的编辑窗口将显示它的描述,这种模式比较适合初学者。
在专家模式下,可以在编辑窗口中直接输入脚本语句,这种模式适用于对脚本语句比较熟练的用户。
本文所用代码都是在专家模式下完成。
本文通过一个简单实例,详细讲解Flash编程中一些动作脚本的用法。
“雨、雪”是自然界中最常见的现象,也是Flash爱好者最喜欢制作的实例。
本文将利用Flash编程分别用两种方法来实现“下雪”特效。
1.启动flash,把图层一命名为背景,把图片导入到舞台。
2.Ctrl+F8创建图形元件—雪花,设置背景为黑色,给雪花填充颜色为白色。
3.在创建一个影片剪辑—雪花一片,使用任意变形工具把重心移到下边+上,然后在变形
面板里面设置角度为60度,复制并且应用变形,重复6次,雪花一片就做好了。
4.改变雪花一片的大小,在图层一的第10帧插入关键帧,然后添加一个运动引导层,选
择铅笔工具画一个轨迹,在图层一中,选中第一帧,把雪花放在最上面,选中第10帧,把雪花放在最下面,在图层一创建补间动画。
5.把窗口转到场景一,插入图层--雪花飘落,创建补间动画。
6.再插入一个图层—脚本语言,在第一,二,三帧插入空白关键帧,分别写入函数i=1;
if(i<=25){
duplicateMovieClip("_root.雪","雪"+i,i); //复制影片剪辑“雪”
setProperty("雪"+i,_x,random(500)); //设置复制的影片剪辑的X轴坐标为随机500 setProperty("雪"+i,_y,random(400));
i++;
}else{
gotoAndPlay(1);
}
gotoAndPlay(2);
7.ctrl+enter测试影片。
FLASH脚本下雨下雪代码(一)FLASH脚本下雨下雪代码(一)下雪代码fallSnow(this, 100, [550, 400]); function fallSnow(path, num, size) { for (var i = 0; i<num; i++) { path.createEmptyMovieClip("s"+i, i); var mc = path["s"+i]; mc._x = random(size[0]); mc._y = random(size[1]); mc.ro = [1, -1][random(2)]; mc.xtime = random(20); mc.startTime = 0; mc.id = Math.pow(i, 1/2); createSnow(mc, mc.id/2.5, "0xffffff", 20*mc.id); } var loop = function () { updateAfterEvent(); for (var i = 0; i<num; i++) { var mc = path["s"+i]; mc._rotation += mc.ro*5; mc._x += mc.id*mc.ro/10; mc._y += mc.id/2; mc.startTime++; scanTar(mc); scanEdge(mc, size); } }; var interval = setInterval(loop, 10); } function createSnow(mc, radius, c, alpha) { with (mc) { moveTo(0, -radius); beginFill(c, alpha); lineStyle(0, "0x000000", 0); for (var i = 1; i<=6; i++) { var a1 = -Math.PI/6+i*Math.PI/3; var a2 = i*Math.PI/3; lineTo((radius/5)*Math.sin(a1), -(radius/5)*Math.cos(a1)); lineT o(radius*Math.sin(a2), -radius*Math.cos(a2)); } endFill(); } } function scanTar(mc) { if (mc.startTime>=mc.xtime) { mc.startTime = 0; mc.xtime = random(20); mc.ro = [1, -1][random(2)]; } } function scanEdge(mc, size) { if (mc._x>size[0]) { mc._x = 0; } else if (mc._x<0) { mc._x = size[0]; } if (mc._y>size[1]) { mc._y = 0; } }下雨效果只要是做过flash 得人都知道。
Flash制作雪花视觉动画效果的三种制作方法第一种方法:最笨但也效果最好,就是用“引导线”功能,让雪花不停的飘呀飘,如果多用几个图层,效果更好。
1、新建一个Flash影片。
设背景为“黑色”,其他的用默认值。
2、按Ctrl+F8新建一个组件,类型为“影片剪辑”,命名为“雪花”。
在它的正中用“铅笔”工具画一个不规则的多边形,然后用“颜料桶工具”将它填上白色。
(如图1-1所示)3、再用Ctrl+F8建一个组件,类型为“影片剪辑”,命名为“前层”。
4、将组件“雪花”拖到其中,用“选定工具”中的“比例”功能把它缩小(小技巧:先用“放大镜”将它放大,然后再用“比例”功能,可缩得更小)。
在第80帧上“插入关键帧”,在“图层1”上用鼠标右键的“添加引导线”功能(见图1-2)。
在新增加的“引导线:图层1”的第1帧上,从“雪花”开始,画一条弯曲的曲线。
将第80帧上的“雪花”沿曲线从头拖到曲线的末尾。
然后在“图层1”的第1帧上点鼠标右键,选“创见动画动作”功能,见图1-3。
5、第4步是制作一片雪花,下雪不是只下一片的吧。
插入图层,将第4步重复做10次。
做好后的效果见图1-4。
6、把第3至5步重复做两次,不同之处是组件的命名分别为“中层”和“后层”。
“雪花”的大小和“引导线”的路径不要一样。
这是为了多做几个图层,看起来效果细腻一点。
7、现在回到场景1中,插入6个图层,分别命名为“后层1”、“后层2”、“中层1”、“中层2”、“中层3”、“中层4”、“前层1”、“前层2”。
在对应的层上拖入对应的组件,并适当的调整时间轴,让雪花飘得连贯起来。
见图1-5。
按Ctrl+Enter就可以看到效果了。
第二种方法:用Actionscript的函数,比较简便,具体步骤如下:1、新建一个Flash影片。
设背景为“黑色”,其他的用默认值。
2、按Ctrl+F8新建一个组件,类型为“影片剪辑”,命名为“雪花”。
在它的正中用“铅笔”工具画一个不规则的多边形,然后用“颜料桶工具”将它填上白色。
浅谈利用Flash制作下雪动画效果的几种方法【摘要】在Flash动画制作中,很多初学者对下雪效果的制作很感兴趣,本文通过元件和Action script动作脚本相结合的方法讲述了三种下雪特效的制作方法。
【关键词】Flash;下雪效果;Action script一、引言随着信息技术的不断进步,多媒体技术已经在教学、科研以及日常生活等众多领域广泛利用。
而Flash作为一种交互式二维动画设计工具,它可以将文字、声音、图片、视频有效的融合在一起,以制作出高品质、形象、生动的动画效果。
在Flash动画制作过程中需要场景、元件、图层以及Action script动作脚本配合使用才能制作出好的动画效果。
本文通过制作下雪特效实例,让读者掌握利用元件和Action script动作脚本制作下雪的效果。
二、制作下雪特效的动作脚本1.Function()函数为用户自定义的函数,语法格式为:Function 函数名(参数列表){代码},Function是函数的头部,函数名为用户自定义的函数名称,参数列表可以为空,代码可以由多条语句组成。
2.if函数为系统函数,语法格式为:if(条件){代码},如果条件为真(true)执行大括号内部代码,条件为假(flase)不执行。
3.onClipEvent()函数是事件处理函数,其功能是触发为特定影片剪辑实例定义的动作。
这个事件处理函数只能添加在影片剪辑实例上,语法格式为:onClipEvent(movieEvent){ 要执行的语句}小括号中的参数,movieEvent是一个称作事件的触发器。
当事件发生时,执行后面大括号中的语句。
本文使用onClipEvent(load)函数,load事件是当影片剪辑实例出现在时间轴中时,即执行大括号中的语句,语句只执行一次。
onClipEvent(load)当影片片断第一次加载道时间轴时,会触发本事件一次。
4.MovieClip.attachMovie函数是从库中取得一个元件并将其附加到影片剪辑中。
Flash雪花脚本的编写
v a r s c e n e Wi d t h=550;//定义场景的宽
v a r s c e n e H e i g h t=400;//定义场景的高
v a r s i d e D i s Wi d t h=S t a g e.w i d t h/2-s c e n e Wi d t h/2;//定义变量,雪花的横向位移范围
v a r s i d e D i s H e i g h t=S t a g e.h e i g h t/2-s c e n e H e i g h t/2;//定义变量,雪花的纵向位移范围
v a r s n o w N u m=150;//定义雪花的数量
v a r s n o w S p a c e:M o v i e C l i p=_r o o t.c r e a t e E m p t y M o v i e C l i p("r o o m",1);//声明一个空影片剪辑s n o w S p a c e.
f u n c t i o n a d d M a s k e r() {//声明a d d M a s k e r函数,执行两项工作.1是画外边框,2是画雪花景_r o o t.c r e a t e E m p t y M o v i e C l i p("m a s k e r",-2);//创建空影片剪辑m a s k e r,层深-2.任务是为舞台画外边框,并填充颜色
w i t h(m a s k e r){//设置m a s k e r的属性。
l i n e S t y l e(1,0x c c c c c c,100);//设置线条颜色
b e g i n F i l l(0x000000,0);//绘制矩形闭合路径,并填充灰色,透明度为0.
m o v e To(s i d e D i s Wi d t h,s i d e D i s H e i g h t);//绘制起点
l i n e To(s i d e D i s Wi d t h+s c e n e Wi d t h,s i d e D i s H e i g h t);//绘制的右上角点的位置
l i n e To(s i d e D i s Wi d t h+s c e n e Wi d t h,s i d e D i s H e i g h t+s c e n e H e i g h t);//绘制的右下角点的位置l i n e To(s i d e D i s Wi d t h,s i d e D i s H e i g h t+s c e n e H e i g h t);//绘制的左下角点的位置
l i n e To(s i d e D i s Wi d t h,s i d e D i s H e i g h t);//绘制的左上角点的位置
e n d F i l l();//结束绘制
}
c r e a t e S n o w();
}
f u n c t i o n c r e a t e S n o w() {//定义一个匿名函数,完成声明一个雪花M C,雪花半径,循环画雪花
v a r n=0;//局部变量n=0
w h i l e(n
var snow:MovieClip = snowSpace.createEmptyMovieClip("s"+n, n);//声明snowSpace剪辑由"s"+n个snow组成
var radius:Number = Math.random()*3;//定义雪花半径大小
drawSnow(snow, radius);//把snow, radius把参数传递给drawSnow函数
n++;
}
}
function drawSnow(snow:MovieClip, radius:Number) {//定义一个匿名函数,画一个雪花
var p = radius*.9;//局部变量P,用来定义雪花大小的坐标值
with (snow) {//设置snow这个对象的动作.画雪花圆形白色填充
colors = [0xCCCCCC, 0xFFFFFF];//设置雪花的颜色
alphas = [100, 100];//设置透明度
ratios = [0, 255];//采样处的宽度的百分比
matrix = {matrixType:"box", x:-Math.random()*2*radius, y:-Math.random()*2*radius, w:2*radius, h:2*radius, r:(90/180)*Math.PI};//一个变形矩阵
beginGradientFill("radial", colors, alphas, ratios, matrix);// 设置填充色.
curveTo(p, -p, radius, 0);//定义点坐标,画雪花
curveTo(p, p, 0, radius);
curveTo(-p, p, -radius, 0);
curveTo(-p, -p, 0, -radius);
endFill();//结束
}
snowProperty(snow, sceneWidth, sceneHeight);//把参数传递给snowProperty
}
function snowProperty(snow, w, h) {//定义一个匿名函数,一个雪花如何下降
snow._x = sideDisWidth+Math.random()*w;//根据可编辑的宽及0和1中的任意一个数乘雪花宽计算雪花的X轴起始位置
snow._y = sideDisHeight+Math.random()*h;//根据可编辑的高及0和1中的任意一个数乘雪花高计算雪花的Y轴起始位置
snow._rotation = Math.random()*120+30;//设置旋转角度.有立体感.雪花的旋转程度为0和1中的任意一个数乘120+30
snow.stepX = Math.cos((snow._rotation*Math.PI)/180);//雪花横向位移.用计算余弦(旋转角度*常数3.14)/180) snow.stepY = Math.random()*2+1;//雪花纵向位移.为0和1中的任意一个数*2-1
setInterval(snowFall, 30, snow); //每隔0.5秒调用一次,由snowFall完成
}
function snowFall(snow) {//定义一个匿名函数,该函数为大雪花降落位移范围
snow._x += snow.stepX;//横向下落位移
snow._y += snow.stepY;//纵向下落位移
if (snow._x
snow._x = sideDisWidth+sceneWidth;//为雪花的横坐标附值
}
if (snow._x>sideDisWidth+sceneWidth) { //如果雪花的横向坐标大于所附的值
snow._x = sideDisWidth; //横向位移再回到初始点
}
if (snow._y>sideDisHeight+sceneHeight) {//如果雪花的纵向坐标大于所附的值
snow._y = sideDisHeight;//纵向位移再回到初始点
}
}
addMasker();。