用AS来实现飘雪效果动画

时间:2012.06.21频道:Flash

什么都不用管,只要将下面的这些AS代码COPY到FLASHMX新建文档的第1帧中,Ctrl 回车测试一下,就会看到雪花效果了。 //代码如下: //========= S_X=Stage.width; S_Y=Stage.height; S_snow=120; TTurl="www.webjx.com" _root.createEmptyMovieClip("webjx_BG"


  什么都不用管,只要将下面的这些AS代码COPY到FLASHMX新建文档的第1帧中,Ctrl 回车测试一下,就会看到雪花效果了。

  //代码如下:

  //=========

  S_X=Stage.width;

  S_Y=Stage.height;

  S_snow=120;

  TTurl="www.webjx.com"

  _root.createEmptyMovieClip("webjx_BG",1);

  with(_root.webjx_BG){

  beginFill(0x000000,100);

  lineStyle(0,0x000000,0);

  moveTo(0,0);

  lineTo(S_X,0);

  lineTo(S_X,S_Y);

  lineTo(0,S_Y);

  lineTo(0,0);

  endFill();

  }

  _root.createEmptyMovieClip("webjx_snow",2);

  with(_root.webjx_snow){

  lineStyle(0,0x000000,0);

  beginFill(0xffffff);

  moveTo(20,20);

  curveTo(24,20,24,16);

  curveTo(24,12,20,12);

  curveTo(16,12,16,16);

  curveTo(16,20,20,20);

  endFill();

  }

  _root.webjx_snow._visible=0

  webjx=3;

  while(webjx<=S_snow&&TTurl=="www.webjx.com"&&substring(_root.TTurl,5,5)=="webjx"){

  duplicateMovieClip("webjx_snow","snow" webjx,webjx);

  with(eval("snow" webjx)){

  _x=random(S_X);

  _y=random(S_Y);

  _xscale=Math.random()*60 40;

  _yscale=eval("snow" webjx)._xscale;

  _alpha=eval("snow" webjx)._xscale random(15);

  }

  webjx ;

  }

  for(vari=3;i<=S_snow;i ){

  vartruewebjx=["snow" i];

  _root[truewebjx].onEnterFrame=function(){

  this._x =Math.random()*(this._xscale)/10;

  this._y =Math.random()*(this._yscale)/10;

  if(this._x>_root.S_X){

  this._x=0;

  }

  if(this._y>_root.S_Y){

  this._y=0;

  }

  };

  }

  //=========================

  //代码结束

  怎么样,看到效果了吧:)

  现在我来说一下我在制作时的编程思路:

  我们要做飘雪效果,那一定要有白色的雪花,所以用createEmptyMovieClip()来创建一个白色小圆的MC是势在必行的……

  但是,不要忘了,FlashMX中,背景的默认色就是白色,所以假如我们直接做出雪花飘落的效果也看不出来(因为雪花和背景都是白色)因此第一步是――用createEmptyMovieClip()创建一黑色矩形,大小和主场景同大。

  S_X=Stage.width;//主场景的宽

  S_Y=Stage.height;//主场景的高

  用来获得主场景的宽度和高度。

  //下面是制作一个黑色的背景

  _root.createEmptyMovieClip("webjx_BG",1);

  with(_root.webjx_BG){

  beginFill(0x000000,100);

  lineStyle(0,0x000000,0);

  moveTo(0,0);

  lineTo(S_X,0);

  lineTo(S_X,S_Y);

  lineTo(0,S_Y);

  lineTo(0,0);

  endFill();

  }

  用createEmptyMovieClip("webjx_BG",1)来创建一个新的MC(电影剪辑)。再用变量S_X和S_Y表示主场景的宽和高。画好矩形线框后,再把和主场景同大的MC填充为黑色。

  第一步已完成了。能够先Ctrl 回车测试一下,看是不是在主场景中有一个黑色的矩形?

  好了,再来做雪花:

  //制作一个雪花,填充为白色的小圆。

  _root.createEmptyMovieClip("webjx_snow",2);

  with(_root.webjx_snow){

  lineStyle(0,0x000000,0);

  beginFill(0xffffff);

  moveTo(20,20);

  curveTo(24,20,24,16);

  curveTo(24,12,20,12);

  curveTo(16,12,16,16);

  curveTo(16,20,20,20);

  endFill();

  }

  Ctrl 回车测试一下,看是不是在场景的左上角出现一个小白点?

  好了,我们继续向下做:

  既然是雪花飞舞,就不可能只有一个雪花在飞

  所以我们要用duplicateMovieClip()来复制出N多个雪花,为了日后修改时或别人看时都方便,我们把雪花的个数用变量来代替:

  S_snow=120;//雪花的个数

  _root.webjx_snow._visible=0//将原雪花隐藏

  webjx=3;

  while(webjx<=S_snow&&TTurl=="www.webjx.cn"&&substring(_root.TTurl,5,5)=="webjx"){

  duplicateMovieClip("webjx_snow","snow" webjx,webjx);

  with(eval("snow" webjx)){

  _x=random(S_X);

  _y=random(S_Y);

  _xscale=Math.random()*60 40;

  _yscale=eval("snow" webjx)._xscale;

  _alpha=eval("snow" webjx)._xscale random(15);

  }

  webjx ;

  }

  OK,现在再测试一下,看看是不是满天的雪花:)

  虽然是满天的雪花,可是不会动怎么办?

  没关系,我们还是能够用AS来实现D~~~

  LOOK:

  //控制雪花的飘动,假如飘出主场景,则重新回到主场景中来

  for(vari=3;i<=S_snow;i ){

  vartruewebjx=["snow" i];

  _root[truewebjx].onEnterFrame=function(){

  this._x =Math.random()*(this._xscale)/10;

  this._y =Math.random()*(this._yscale)/10;

  if(this._x>_root.S_X){

  this._x=0;

  }

  if(this._y>_root.S_Y){

  this._y=0;

  }

  };

  }

  利用for循环来控制任何被复制出来的雪花,为加强随机效果,我们能够使用Math.random()

  好了,就讲到这了,自己动手试试吧。
相关阅读Readings
  • Flash作品的播放保护

    假如实现swf文档不能在本地或非法url中播放,就能够达到一定程度的保护效果。下面来讲一下实现的大致思路, 代码如下: var this_url = _...

    05.29
  • 用FlashAS实现鼠标画圆的效果

    在FLASH或PHOTOSHOP中能够很轻松的画出一个圆或椭圆,怎样做一个作品,让用户能够直接在里面拖动鼠标画出一个圆或椭圆来呢?下面是BreakD...

    05.31
  • Flash实现用鼠标调整窗口的大小

    Flash MX 2004自带的Window组件,功能并不丰富。现在,我为他加上了用 鼠标 调整窗口的大小的功能!! 函数: //随 鼠标 缩放大小函数 //f...

    06.02
  • 人声后期精细效果处理的方法与要点

    在视频编辑过程中免不了要对人声进行处理同,虽然有些视频编辑软件的音频后期功能比较强大,但在精细处理方面还是不足。若想获得较为理想...

    06.03
  • Flash制作泡泡样式Loading效果

    代码有限,创意无限. 上次发了一个计速器样式的Loading,现在让我们来稍微改一改代码,实现另一种有趣的Loading样式. 首先在flash场景中画一...

    06.04
留言评论Comment
精彩推荐Recommend
Copyright © 2010-2017 XPlaySoft.com 软件玩家 All Rights Reserved 粤ICP备12021207号