您当前的位置:JZ5U绿色下载站文章中心设计学院Photoshop → 文章内容
  • 用Flash制作鬼火效果

本实例的火焰效果和一般的火焰效果不同,这里的火焰除了不停的抖动和伸缩外,还会不断的变化火焰的颜色,加上黑色的背景,给人一种神秘的感觉,看上去很象一些电影中的鬼火,是不是很恐怖哦,长话短说,下面我们就来学习其制作方法。

首先启动Flash,新建一个大小为500px*400px,背景色为黑色的影片。

既然制作的效果是火焰,自然少不了一个简单的火焰效果,然后通过Action的控制,就可以变化出变幻莫测的火焰来。所以新建一个Movie clip组件,命名为fires,进入组件的编辑状态后,使用椭圆工具绘制一个长条形的椭圆,使用箭头工具将椭圆的两个尖调整的细一点,然后使用颜料桶工具将其填充为黄色和黑色的线性填充色,如图1所示:


图1

然后分别在图层layer1的第5桢和第8桢插入两个关键桢,回到第5关键桢,将此祯的椭园对象的长度调整的长一些,如图2所示:


图2

分别建立第1关键桢到第5关键祯和第5关键桢到第8关键桢之间的Motion运动过渡效果,时间线如图3所示;


图3

既然我们的这个火焰效果是可以变化颜色的,所以现在就来制作控制火焰颜色变化的Action控制代码。新建一个Movie clip,命名为color,进入组件的编辑状态后,在图层layer1的第1桢添加如下Action:

col = Random(0xafafaf)+0x999999;

//使用random随机函数取随机值,其中0xafafaf和0x999999为16进制数,16进制//数常用于颜色设置。Col变量接受产生的随机数

firecol = new Color(_root["fire"and i]);
  ffcol = new color(_root.ff);

//定义两个color类的对象firecol和ffcol

firecol.setRGB( col );
  ffcol.setRGB( firecol.getRGB()+0xfaff44 );

//两个color类的对象firecol和ffcol分别被设置了相应的颜色

在图层layer1的第2桢添加如下Action:

col = col+0x0f0f0f;

//重新设置变量col的值

firecol.setRGB( col );
  ffcol.setRGB( firecol.getRGB()+0xfaff44 );

//重新设置两个color类的对象firecol和ffcol的颜色值

在图层layer1的第10桢添加如下Action:

gotoAndPlay(2);

//返回到第2桢

这样,我们需要的所有组件就都准备好了,接下来就需要布置主场景了。

回到主场景中,将组件fire从图库中拖到图层layer1中,并放置到舞台的合适位置,在属性面板中命名其为ff,然后将图层layer1延伸到第3桢,如图4所示:


图4

新增一个图层layer2,将组件color拖到工作区的任意位置即可,因为组件layer2中没有任何图形对象,全部为Action控制代码,所以组件color放置到工作区时只能看到一个空的圆圈,说明这个是一个空的Movie clip.

再新增一个图层layer3,在第1桢添加如下Action控制代码:

if (i>10) {
  i = 0;
  }
  i++;
  duplicateMovieClip("/ff", "fire"and i, i);
  setProperty("fire"and i, _x, _root.ff._x+Random(7)-3);
  setProperty("fire"and i, _y, _root["fire"and (i-1)]._y-60*Math.pow(0.6,i));
  setProperty("fire"and i, _xscale, Math.pow(0.95,i)*100);
  setProperty("fire"and i, _yscale, Math.pow(1.05,i)*100);

//复制10个对象ff的副本,然后分别设置副本的坐标和缩放尺寸。

在图层layer3的第3桢添加如下Action控制代码:

if (i>10) {
  i = 0;
  }
  i++;
  duplicateMovieClip("/ff", "fire"and i, i);
  setProperty("fire"and i, _x, _root.ff._x+Random(7)-3);
  setProperty("fire"and i, _y, _root["fire"and (i-1)]._y-60*Math.pow(0.55,i));
  setProperty("fire"and i, _xscale, Math.pow(0.95,i)*100);
  setProperty("fire"and i, _yscale, Math.pow(1.05,i)*100);
  gotoAndPlay(1);

//上面的Action和第1桢中的完全相同,目的是重复执行这段代码。

最后的时间线如图5所示:


图5

本实例的最终效果如图6所示:


图6



  • 作者:互联网  来源:本站整理  发布时间:2005-08-20 21:28:56


------------------------------- · 相关文档浏览 · --------------------------------------------------------------------- · 热门文档浏览 · -------------------------------------