选择显示字体大小

flash制作可以聚集的飞扬雪花

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

  下面是作品最终效果:
flash/index2//img_flash_ddvip/041230flashsnow.swf" width="560" height="560" pluginspage=http://www.macromedia.com/shockwave/download/index.cgi?p1_prod_version=shockwaveflash type=application/x-shockwave-flash quality=high>


  其实整个过程很简单的,大概的思想就是找一个雪花的图片,然后把它封装成一个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就可以测试了,如果可以的话,还可以加入好看一点儿的背景,那样效果就更好了。

  


 


关键字 本文所属关键字

相关 与本文相关文章

分类 所有文章关键字导航

源码编程相关

Java   Asp   PHP   .Net   XML   C/C++   CGI   VB   Jsp   J2ee   J2se   J2me   EJB   Servlet   Tomcat   Resin   Struts   Weblogic   Eclipse   ANT   GUI   JMS   Web servise   IDEA   Webphere   Hibernate   Spring   Jboss   Applet   Swing   Socket   Javamail   Perl   Ajax   P2P   安全   模式   框架   测试   开源   游戏

SQL数据库相关

My-SQL   Ms-SQL   Access   DB2   Oracle   Sybase   SQLserver   索引   存储过程   加密   数据库   分页   视图  

手机无线相关

3G   Wap   CDMA   GRPS   GSM   IVR   彩信   短信   无线   增值业务

网页设计制作相关

HTML   CSS   网页配色   网页特效   Javascript   VBscript   Dreamweaver   Frontpage   JS   Web   网站设计

网站建设推广相关

建站经验   网站优化   网站排名   推广   Alexa

操作系统/服务器相关

Windows XP   Windows 2000   Windows 2003   Windows Me   Windows 9.x   Linux   UNIX   注册表   操作系统   服务器   应用服务器

图形图像多媒体相关

Photoshop   Fireworks   Flash   Coreldraw   Illustrator   Freehand   Photoimpact   多媒体   图形图像

标准 网站致力的规范

Valid CSS!

无不良内容,无不良广告,无恶意代码

Valid XHTML 1.0 Transitional

creativecommons