用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



编辑:

相关内容

 娱乐专题

more...

高峰私生子

王伯昭被打

傅彪肝癌晚期

赵薇餐馆打人事件

《云南映象》图集

张铁林拖欠中介费

女医生状告赵忠祥

高虎被捕事件

演绎经典美丽

解读《十面埋伏》

揭示明星美丽秘诀

五颜六色娱乐圈

明星纤体大比拼

《绿茶》精彩影评

天地英雄

吕丽萍群星艺术学校被起诉

于娜出道前被包养是真是假?

香港英皇贪污丑闻追踪

多少明星追忆中

2003环球小姐大赛

 

 叨叨专栏

more...

冯小刚,你怎么敢抽"上帝"?

流氓与流氓

娱乐媒体,请站直一点

原来张铁林不是中国人!

《神雕侠侣》的悲惨前途

男人,要硬派不要阴柔

请不要随便脱裤子

李欣,《自娱自乐》的挺滋儿!

不服没用,人家就是红了!

陆毅演戏吧,别唱歌了。

 

 

 
报业集团
- 版权声明 - 广告业务 - 联系方式
Copyright (C) 2001-2002 dzwww.com. All Rights Reserved
大众报业集团网络中心主办
Email:webmaster@mail.dzdaily.com.cn