flash雪花飘落代码(flash中设计雪花飘落动画)

http://www.itjxue.com  2023-02-27 15:28  来源:未知  点击次数: 

flash雪花飘落教程

楼主,你可以采用楼上朋友说FLASH飘雪代码,也可以采用用flash引导线制作雪花飘落的动画。

用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就可以看到效果了。

(这种方法简单且效果好,主要是用“引导线”功能,让雪花不停的飘下,多用几个图层效果会更好)

提问者评价

谢谢!你提供的教程,基本解决了,同时也谢谢其他的朋友。

参考资料:

请问Flash中的雪花飘落效果如何在某一确定帧停止?

stop()是没法停的,需要移除事件监听。

如此更改你的事件处理函数:

function xx(evt:Event) {

if (i300) {

var mc:MovieClip=new xh();

mc.name="xh"+i;

mc.x=Math.random()*550;

mc.y=Math.random()*400;

mc.scaleX=mc.scaleY=Math.random()*0.6+0.4;

mc.alpha=0.3+0.6*Math.random();

i++;

addChild(mc);

}

if(currentFrame==yy)

{

removeEventListener(Event.ENTER_FRAME,xx);

}

}

yy就是你想停止雪花效果的帧数

Flash制作雪花飘落效果,并且在第180帧出停止

180用这个:

stop();

onEnterFrame = function () {

?for (i=0; i=390; i++) {

??removeMovieClip("img"+i);

?}

};

我附件是别的代码,你可以参考下。

求FLASH雪花代码

var sceneWidth =550;//定义场景的宽

var sceneHeight=400;//定义场景的高

var sideDisWidth = Stage.width/2-sceneWidth/2;//定义变量,雪花的横向位移范围

var sideDisHeight = Stage.height/2-sceneHeight/2;//定义变量,雪花的纵向位移范围

var snowNum = 150;//定义雪花的数量

var snowSpace:MovieClip = _root.createEmptyMovieClip("room", 1);//声明一个空影片剪辑snowSpace.

function addMasker() {//声明addMasker函数,执行两项工作.1是画外边框,2是画雪花景

_root.createEmptyMovieClip("masker", -2);//创建空影片剪辑masker,层深-2.任务是为舞台画外边框,并填充颜色

with (masker) {//设置masker的属性。

lineStyle(1, 0xcccccc, 100);//设置线条颜色

beginFill(0x000000, 0);//绘制矩形闭合路径,并填充灰色,透明度为0.

moveTo(sideDisWidth, sideDisHeight);//绘制起点

lineTo(sideDisWidth+sceneWidth, sideDisHeight);//绘制的右上角点的位置

lineTo(sideDisWidth+sceneWidth, sideDisHeight+sceneHeight);//绘制的右下角点的位置

lineTo(sideDisWidth, sideDisHeight+sceneHeight);//绘制的左下角点的位置

lineTo(sideDisWidth, sideDisHeight);//绘制的左上角点的位置

endFill();//结束绘制

}

createSnow();

}

function createSnow() {//定义一个匿名函数,完成声明一个雪花MC,雪花半径,循环画雪花

var n = 0;//局部变量n=0

while (nsnowNum) {//在0到150数量范围循环画雪花

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._xsideDisWidth) {//如果横向位移不超出sideDisWidth值

snow._x = sideDisWidth+sceneWidth;//为雪花的横坐标附值

}

if (snow._xsideDisWidth+sceneWidth) { //如果雪花的横向坐标大于所附的值

snow._x = sideDisWidth; //横向位移再回到初始点

}

if (snow._ysideDisHeight+sceneHeight) {//如果雪花的纵向坐标大于所附的值

snow._y = sideDisHeight;//纵向位移再回到初始点

}

}

addMasker();

(责任编辑:IT教学网)

更多

推荐导航代码文章