雪花flash

国际作者 / 996信息技术 / 2026-04-02 23:33
"
针对当前热议的雪花flash话题,我们进行了深入调研和信息整合,力求为您呈现全面客观的内容分析。1、制作雪花(点一个小白点),

针对当前热议的雪花flash话题,我们进行了深入调研和信息整合,力求为您呈现全面客观的内容分析。

1、制作雪花(点一个小白点),转换成**剪辑,命名为雪花。

2、再插入一个新**剪辑,命名为飘雪。把雪花从库里拖出,全居中。实例名为MC,加帧动作:

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));

lineTo(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;

}

}

在主场景新建图层,选中第一帧,把飘雪**剪辑从库里拖到舞台左上角,在第180帧插入空白关键帧。

OK,测试。

怎么可以做雪花飘落的效果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 (n<snowNum) {//在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._x<sideDisWidth) {//如果横向位移不超出sideDisWidth值

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

}

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

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

}

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

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

}

}

addMasker();

要看是用在哪里,如果是动画里,就要用补间来制作,如果是可以用代码,比较简单一些。

代码的可以参考下面的教程:

Flash8如何制作下雪效果(AS2)

本文已完整呈现雪花flash的核心内容解析,若这些分析对您的工作或学习有所助益,建议您将本站加入书签以便后续查阅。

分享到
声明:本文为用户投稿或编译自英文资料,不代表本站观点和立场,转载时请务必注明文章作者和来源,不尊重原创的行为将受到本站的追责;转载稿件或作者投稿可能会经编辑修改或者补充,有异议可投诉至本站。

热文导读