当前位置: 首页 > 图文教程 > Flash动画 > Flash动画制作 > Flash教程:通过实例学习AS(一):火焰的制作

Flash动画制作
赤手空拳下载Flash
创建一个Flash站点的十大技巧
用Flash制作Google搜索程序
枫桥夜泊下 遮罩效果的动态文本
Flash MX 2004 ActionScript图文教程(十二)
Flash实例教程 扫描文字效果
Flash MX 2004 ActionScript图文教程(十三)
快速制作您的flash图表
Flash MX 2004 ActionScript图文教程(十四)
Flash实例教程 变幻的字母
Flash MX 2004 ActionScript图文教程(十五)
Flash实例教程 相约北京 扬帆青岛
Flash教程实例 光线特效文字
Flash课件实例 画正多边形
Flash课件实例 平行四边形法则
Flash实例教程 小孔成像课件
精简Flash文件体积七法
Flash教程实例:水中浮动的文字
金鸡贺岁!Flash制作鸡年新春动画贺卡
Flash MX 2004新特性实例学习一

Flash动画制作 中的 Flash教程:通过实例学习AS(一):火焰的制作


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-11-22   浏览: 151 ::
收藏到网摘: n/a

先看看效果:

   很多朋友都说了,想学AS,但又觉得不太好学,的确,系统地学习AS是要有耐心,恒心才行。特别是那些专业的名词、术语诸如:包、类、对象……等,苦涩难懂,又嚼之无味,所以我想我们就不系统地学习,我们来做练习,从而来学习AS知识,大家一起走进AS世界。今天我们就来做一个火焰练习。

   既然是学习AS,那么相关知识还是要讲解一下的。下面我们就介绍一下,本例中我们将要用到的AS知识点。我力求用大家能嚼之有味的语言来介绍,希望大家能接受。为了满足所有的朋友,我把阅读本文的朋友看着是从未接触过AS的。

首先,我们来认识一下:变量

几乎所有的编程语言都会用到变这个名词。变量就是用来临时储存数据的。有点象初中学的代数,(不一定恰当哈),比如初中代数中有这样一道题:

  a = 3, b = 5,求:a+b

那我们得出:a+b = 8

在编程中,我们就把a b称为变量,在a、b中分别储存了数字3和5,那么为什么叫变量呢?我们来看看:

a = 3;这个时候在变量a中储存的数字是3

a = 5;这个时候在变a中储存的数字就变成了5,数字变了。

我们这样来理解变量,在我们的电脑内存中,划分了很多个房间,我们给一些房间取上名字,用来存放数据,比如我给一个房间取名叫:a,那么这个a就被称为变量。那么怎样给这样的房间取名字呢?很简单,用var这个词。如:

var a   这样我们就声明了一个叫a的变量,也就是建了一个叫a的房间

a = 3
现在3赋值给了a,3住进了a房间

a = 5
现在5来了,占了房间,一脚把3给踢了出去。

在命名变量的同时就可以给它赋值,所以上面的语句又写成:

 var a = 3;

到现在为止,我想大家已经清楚变量的概念了。有了变量,我们就可以做一些计算:


a = 3;

a = a + 3; 那么现在a中的数值是6;

另一个计算方法:


a += 3; 它的意思就是:a = a + 3,即用本身去加上右边的数值。

 a++ ;它的意思是:a += 1,也就是:a = a +1,这个叫递加,即每次增加1

我们说变量是用来存放数据的,数据和数值是两个不同的概念,在编程中数据除数值外还有很多不同的数据类型,比如:字符、日期等。

我们可以在我们的房间上挂上数据类型,来限制房间中只能住哪一类数据。做法是在变量名后加上冒号,注明数据类型,比如:

var a:Number 这样a中就只能放数值了,放123456可以,放“清风是个大美女”就不行,也就是说女生宿舍,男生莫入。

var b:String 这时就只能放字符了,放进去的数值都会被认作是字符,比如:

var a:String = “3”;

var b:String =“ 5”;

var c = a+b;
这时c中储存的数据是:“35”

下面我们来认识另一个重要的概念:对象

在现在的编程语言中,大多是面向对象的编程,AS到3.0时,已成为标准的面向对象的编程语言了。所以对象的概念是十分重要的。那么对象是个什么玩眼呢?

对象就是一些具体的东西,你的明白?说实话,就这句话我也不明白。比如舞台上的元件,图形,文本框等等,我们都把它叫做对象。又比如你家里的各种物件都可以叫一个对象,电视、桌椅、你及你家那只可爱的小狗狗“娜娜”都可以叫做对象。然后我们把这些对象分个类,比如电器类,包括电视机民,电冰箱,电脑等,它们都有一些共同的特点,这样我们应又认识了一个概念叫做类。类就是一些对象共有性质的概括。不管了,反正类就是同一类型的意思。你可能会提到另一个概念,实例,一些具体的东西叫对象,那么实例又是什么呢?实例是一个具体的对象。糊了,这下总算给弄糊了。不着急,我们慢慢来理一下这层关系,类是指一类相同特性的东西,比如电器类,它下面有很多对象(当然也可以有子类),比如电视机对,洗衣机对等,对象只是一个概念,实例才是具体的东西,比如客厅中的那台电视机就是电视机对象的一个实例。所以我们放在场景中的的任何一件东西:mc,按钮,图形等都是一个具体的实例。对象都有它们的一些属性和方法,这样我们主要介绍属性。比如一个mc对象就有它自已的属性如:大小、位置(x、y坐标)、颜色等。现在我们就介绍几个本例要用到的mc的几个属性:

_x,_y属性,它表示mc的注册点在舞台是的从标,从而确定了mc在舞台上的位置。要注意的是,在AS3中属性的前面已没有下划线了。属性的表示方法:

对象名称._属性名称  (在AS3中是:对象名称.属性名称)

比如我们在场景中有一mc,我们在属性面板中为它指定实例名称为:mc1_mc,那么我们就可以在AS中为它指定属性质了:

mc1_mc._x = 200;

mc1_mc._y = 300;

那么元件mc1_mc被放在了舞台200,300象素处。

_visible属性:它可以设置对象是否可见,如果设为false,就不可见,设为:true就可见,

比如:我们要让mc1_mc不可见就可用上这样一句:

 mc1_mc._visible = false;
这样运行时我们就看不见它了。我们想看见它了,怎么办呢:

用这句: 

   mc1_mc._visible = true; 就行了。


_alpha属性:设置对象的透明度,0-100,例:

  mc1_mc._alpha = 80;

下面介绍一个语句:if条件语句

if英文意思是如果,这个语句的意思就是如果怎么样那就怎么样,它的格式是:

 if (条件表达式) {

   要执行的语句

}

如果园括号中的条件成立的话,那么就执行大括号中的语句,举个例子:

如果你不好好做练习,那么就拉出去打PP,就这该样写:

  if(你没有好好做练习){

      拉出去打PP;

}

duplicateMovieClip( )

这是在场景中复制mc的语句,它可以复制在舞台上的mc,这个语句经常在下雨、下雪、烟花等特效中用到。格式为:

  duplicateMovieClip(“复制的mc实例的名称”,”新实例的名称”,深度”)

深度可以理解为跟层差不多的意思,上面的(数字大的)将盖住下面的。

比如,我们现在舞台上的一个mc,在属性面板中,它的实例名为;mc1_mc,现在我们要复制一个,可用这样的语句:

   duplicateMovieClip(“mc1_mc”,”mc2_mc”,1)

运行时我们发现我们只看到了一个mc,为什么没有复制呢?不是没有复制,而是两个mc完全重合,我们只看到了一个而已。于是我们用上面提到的语句把其中一个移一下,就行了:

  mc2_mc._x = mc1_mc_x + 100;这样新复制出来的mc向右移动了100个像素,我们就看见两个mc了。

Math.random()

Math是一个顶级类,在它里面主要包含了一些数学运算的函数:如三角函数sin cos等。

random()就是Math类中的一个,它的作用是产生一个0-1的随机数。这个语句经常在下雨、下雪、烟花等特效中用到。

好了,敲了半天,总算敲完了,同志们也都厌烦了吧?好了,不学了,我们来做练习。

快打开flash吧,说明本例在as2中实现,照顾多数人,所以如果你用的是cs3的话,在新建文档时,请选择建立“ActionScript 2.0”文档。

先来做柴禾,插入新图形元件,名字随你爱好,叫柴禾也行。用矩形工具画一根柴禾,禁止边框,用线性填充:8A5B5B
FFCC99
FFCC99
FEAE5F,然后再复制两根,将三根柴禾摆成品字形,如图

下面做火焰:新建一图形元件hx,用椭园工具画一园形,宽为51, 高为:51,禁用边框,填充色:放射状,左,右均为EDD823,左色标透明度为100%,右色标透明度为0%。


 新建一影片剪辑元件hm,将图形元件hx拖入,在第8帧,插入关键帧,回到第一帧,用变形工具将园调到最小,几乎看不见。在第8帧将园形调成宽60,高85,在第1帧到第8帧之间创建补间动画。在第9帧插入关键帧,第25帧插入关键帧,并在第25帧将园形的填充色改为:放射状,左右均为:E72510,左色标透明度为 100%,右色标透明度为0%,将圆形往上移一段距离,(火焰的高度),然后用变形工具将园调到最小,直到看不见。在第9帧到25帧之间创建形状补间。注意:第9帧和第25 帧一定要打散。


再建一影片剪辑,取名火焰,看到了吧,火焰来了。将hm拖入,并在属性面板中为它指定实例名称为:hy_mc,接下来写代码了。


第1帧代码: var i = 1; // As的代码,每一句后面必须跟个分号。

hy_mc._visible = false;

var m = hy_mc._x;
//

第2帧代码:if ( i<50 ) {

duplicateMovieClip("hy_mc", "hy_mc" + i, i);

this["hy_mc" + i]._alpha = i*10;

//这里this代表主场景的意思,代码写在什么地方this就代表什么,this["hy_mc" + i]就是主场景中的hy_mc+i原件(刚复制的)。

this["hy_mc" + i]._x = Math.random()*60 + m;

i++;

}

第3帧代码:gotoAndPlay(2); //回到第2帧形成循环。


好了,现在回到主场景,在第1层将柴禾拖入放好,在第2层将火焰拖入放好,ok!


大家把练习做好后,在后面跟帖吧,这样我也才有动力写之二,之三,之若干啊。