收藏本站 | 站点地图 | 繁體中文
沭阳乐园
您现在的位置: 沐阳乐园 >> 文章中心 >> 网络教程 >> 动画实例 >> 正文
制作可以聚集的飞扬雪花         
制作可以聚集的飞扬雪花
作者:auzn 文章来源:闪吧 点击数:1755 更新时间:2010-12-19 22:53:05

前几天因为过圣诞节加之小站要转空间,所以就做了一个转换页面,里面就有飞扬的雪花效果。

最近看到不少的雪花特效,自己也有些许研究,不敢独享,拿来大家一起讨论一下。

下面是作品最终效果:

其实整个过程很简单的,大概的思想就是找一个雪花的图片,然后把它封装成一个MC元件,再加入AS语句就可以啦。

好,下面就开始动手了:

新建一个snow.fla文件

设置其舞台大小为:800*560

背景为黑色

先准备一个雪花文件:

把它插入到新建的FLA文件中。

将雪花拖入到主场景中,放置于舞台外,并封装为snow_mc,别忘记定义其实例名:snow_mc

加入两行字并封装为merry1_mc,merry2_mc,别忘记定义其实例名(雪花要落到上面)

在第一帧as编辑区里加入下面的AS语句:

stop();

var i;

//产生60个小雪花

for (i=1; i<60; i++) {

//产生新的雪花剪辑元件

snow_mc.duplicateMovieClip("snow"+i+"_mc", i);

//新的雪花的X,Y坐标

eval("snow"+i+"_mc")._x = random(800);

eval("snow"+i+"_mc")._y = random(560);

//新的雪花的形变

scale = random(60)+50;

//不同的透明度,产生层次感

eval("snow"+i+"_mc")._alpha = scale;

//不同的大小,产生层次感

eval("snow"+i+"_mc")._xscale = scale;

eval("snow"+i+"_mc")._yscale = scale;

//加入控制雪花的AS语句

snow(eval("snow"+i+"_mc"));

}

//这个函数是用来产生一个新的雪花

function createSnow() {

//深度递加

i++;

//产生实例

snow_mc.duplicateMovieClip("snow"+i+"_mc", i);

eval("snow"+i+"_mc")._x = random(800);

eval("snow"+i+"_mc")._y = random(560);

scale = random(60)+50;

eval("snow"+i+"_mc")._alpha = scale;

eval("snow"+i+"_mc")._xscale = scale;

eval("snow"+i+"_mc")._yscale = scale;

snow(eval("snow"+i+"_mc"));

}

//加入控制雪花的AS语句的函数

function snow(snow_mc) {

snow_mc.onLoad = function() {

//舞台大小

stage_x = 800;

stage_y = 560;

//用来判断是否降落

this.moving = true;

//判断是否接触到字体剪辑

touch = false;

//风向和风力

windx = (_xmouse-stage_x/2)/100;

};

//风向和风力随鼠标的移动而改变

snow_mc.onMouseMove = function() {

windx = (_xmouse-stage_x/2)/100;

updateAfterEvent();

};

snow_mc.onEnterFrame = function() {

//判断moving

if (this.moving) {

//随机数用来产生摇摆效果

s = random(2);

//雪花下落

this._y += 10;

if (s == 0) {

this._x += 5;

} else if (s == 1) {

this._x -= 5;

}

//加上风力

this._x += windx;

//超出舞台就初始化

if (this._y>stage_y || this._x<0) {

this._y = 0;

this._x = random(stage_x);

}

//产生旋转效果

this._rotation = random(180);

//未接触MERRY1_MC就执行

if (!touch && this.hitTest(merry1_mc)) {

//产生随机数用以判断是否应该停止下落

stopOrNot = random(4);

//如果随机数为1,则停止下落

if (stopOrNot == 1) {

//this._y += random(5);

//使moving为false,停止下落

this.moving = false;

//因为接触了MERRY1_MC,使touch为true

touch = true;

//因为停止下落,所以删除onEnterFrame

delete this.onEnterFrame;

//因为停止下落,所以重新再产生一个小雪花

createSnow();

}

}

//这里和上面的一样,只不过减少了功能

if (this.hitTest(merry2_mc)) {

stopOrNot = random(2);

if (stopOrNot == 1) {

//this._y += random(5);

this.moving = false;

delete this.onEnterFrame;

createSnow();

}

}

}

};

}

好啦,ctrl+enter就可以测试了,如果可以的话,还可以加入好看一点儿的背景,那样效果就更好了。

文章录入:晴天    责任编辑:清水洗尘 
  • 上一篇文章:
  • 下一篇文章:
  • 【字体: 】 【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
    广告招商
    网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)
    ::发表评论::
     姓 名:
     评 分: 1分 2分 3分 4分 5分
     评论内容:
  • 严禁发表危害国家安全、政治、黄色淫秽等内容的评论。
  • 用户需对自己在使用本网服务过程中的行为承担法律责任。
  • 本站管理员有权保留或删除评论内容。
  • 评论内容只代表网友个人观点,与本网站立场无关。
  • 广告招商
    文章 下载 图片 文字广告
    | 设为首页 | 加入收藏 | 联系站长 | 友情链接 | 版权申明 | 网站公告 | 管理登陆

    备案/许可证编号: 闽ICP备16020960号-1号 域名创建于2016年8月
    版权: 沐阳乐园 All Rights Reserved 站长:张萍 邮箱:381415887@qq.com 联系QQ:联系站长