AS入门教程基础篇.docx

上传人:b****6 文档编号:7613315 上传时间:2023-01-25 格式:DOCX 页数:36 大小:49.87KB
下载 相关 举报
AS入门教程基础篇.docx_第1页
第1页 / 共36页
AS入门教程基础篇.docx_第2页
第2页 / 共36页
AS入门教程基础篇.docx_第3页
第3页 / 共36页
AS入门教程基础篇.docx_第4页
第4页 / 共36页
AS入门教程基础篇.docx_第5页
第5页 / 共36页
点击查看更多>>
下载资源
资源描述

AS入门教程基础篇.docx

《AS入门教程基础篇.docx》由会员分享,可在线阅读,更多相关《AS入门教程基础篇.docx(36页珍藏版)》请在冰豆网上搜索。

AS入门教程基础篇.docx

AS入门教程基础篇

AS入门教程基础篇

我写的这些教程,目的是希望初学FLASH的爱好者能多动手,少提问。

做过FLASH的爱好者都知道,要做好一个FLASH动画,AS是比不可少的。

即使是几句简单的代码也能起到整个FLASH动画画龙点睛的作用。

这里我只简单的介绍一下AS的基本常识。

1.祯:

写在关键祯上面的AS.当时间轴上的指针走到这个关键祯的时候,就写在这个祯上面的AS被触发执行了.常见的例子有在影片结尾的祯上写上stop()等.操作方法就是点选关键祯,然后打开AS面板.

2.按钮:

不同于祯上面的AS,按钮上面的AS是要有触发条件的.要把AS写在按钮上,操作方法是点选按钮,然后打开AS面板.例如:

做一个按钮,放到主场景,点选按钮,然后打开AS面板,写入:

on(release){

stop();

}

这里比祯动画多这些代码:

on(release){},整个翻译过来就是:

当(松开){

停止;

}

红色的代码表示鼠标的触发事件之一,这里使用release松开,按钮的常用事件:

release松开

presss按下

rollOver鼠标进入按钮的感应区

rollOut鼠标离开按钮的感应区

现在明白了写在按钮上面的AS一定就是这种格式的:

on(事件){要执行的代码}

3.mc(电影剪辑)

如果你看懂了上面的饿内容,那么写在MC上面的AS和写在按钮上面的大同小异,操作方法就是点选MC,然后打开动作面板,例如:

onClipEvent(load){

stop();

}

同样的,MC也需要一个事件来触发AS的执行.翻译这段就是:

当剪辑(载入){

停止

}

红色代码同样表示一个事件.mc的事件有下面这些:

load载入,当MC出现的时候执行,也就是除非卸载这个MC,否则load事件内的代码只执行一次.

unload卸载,当MC卸载的时候执行.

enterFram存在的每个祯.在MC存在的每个祯都要执行一次代码.如果你的场景有100个祯,有个MC从41祯开始出现到100祯才消失,那么这个MC上面的代码执行了60次.

mouseDown按下鼠标,在场景内任何地方都算.和按钮不一样的地方.

mouseMove移动鼠标,只要移动鼠标就执行代码

mouseUp松开鼠标

同样你要明确:

写在MC上的代码一定总是这种格式:

onClipEvent(事件){代码}

看到这里,你就明白的写在祯,按钮,MC的的代码有什么不一样了.

                   AS入门语法篇

首先要让大家明白的是:

AS语法的大小写是敏感的.如:

               gotoAndPlay()正确

               gotoAndplay()错误.

我们要从开始养成编程的好习惯,如在每个语句后面都加上分号,有可能的话,尽量给复杂的语句加上注释.注释的例子:

//这里是个注释,但是只能有一行

/*这也是个注释,可以写很多行*/

接下来,介绍几个类型的语法:

1.几个常用的控制场景的方法.如:

play();//让时间轴的指针播放

stop();//停止时间轴的指针在程序触发时候的那个祯

gotoAndStop();//让指针跳转到某个祯,然后继续播放

gotoAndStop();//让指针跳转到某个祯然后停止在那祯

nextFrame();//往下走一祯

prevFrame();//往前走一祯

上面的都是方法.也就是大 括号{}里的代码,是事件的执行者

2.控制属性的语法:

_x // 用来标识目标的X轴的坐标

_y

_alpha  //(属性),用来标识目标的透明度

_width

_name

上面的都是属性

3.控制语句流程的语法.如:

if(条件){

//条件满足执行这里的代码

}else{

//条件不满足执行这里的代码

}

for(i=0;i){

//执行这里的代码N次

}

while(条件){

//当条件满足时一直执行这里的代码

}

这些都是基本的语法,也是AS的基础

4.其他方法和自己定义的方法

这里我不能把所有的语法都一一列出来介绍,因为实在是太多了,具体可以参考Flash自带的帮助手册。

我们只能在以后的应用中慢慢熟悉。

这里,你有个基本概念就行了。

到后面我会给每句话都加上注释。

              AS入门对象篇

 虽然AS不是真正的面向对象的编程,但是它也有对象的概念.这个概念贯穿整个AS的始终,所以对对象的理解,比对语法或其他的理解更为重要.

首先了解以下路径,做过HTML的朋友应该知道这个概念,我认为对路径的理解要深入,我初学的时候就是磕在路径上.

在讲路径前,有必要先讲一下语法:

举例说明,这里要表示房间里的桌子上的一本书,用语法这么表示:

房间.桌子.书

如果要再仔细到书上的页面上的字,很显然:

房间.桌子.书.页面.字

看明白了吧?

语法就是这么表示对象的.节点是父子的关系,前面是父后面是前面父的子.

现在我们开始说路径了哈,其中也要夹杂着对象的说明,例子:

新建一个FLASH文件,然后创建一个MovieClip,mc命名为"mc",防在主场景里面,然后再创建一个按钮,放在MC里面,然后从库里拖一个出来放在主场景,分别给这2个元素实例命名:

MC->myMCbutton->myBtn

现在我们假设主场景是房子,MC是桌子,按钮是书,那么分别怎么表达房子,桌子,书呢?

如下:

_root房子

_root.myMc 房子桌子

_root.myMc.myBtn 房子桌子书

这里的_root是FLASH的关键字,表示主场景的Timeline(时间线).

这里的房子,桌子,书都是我们要理解的"对象".

当你找到这个对象后,才能对对象进行操作,才能给对象施加方法.比如,我现在要打扫房子,打扫就是方法,但对象是房子,表达式是这样:

房子.打扫()

如果你不能正确的表达房子这个对象,你的打扫也就不能正确的实施了.*说明:

这里为什么要在打扫后面加()呢?

因为打扫是方法不是对象,为了让FLASH知道这是个方法,我们必须加上(),要不然FLASH会以为房子里有"打扫"这个东西(对象)呢.

现在,我们可以很容易的对房间里的各个东西进行操作了.如:

房子.打扫();

房子.桌子.整理();

房子.玻璃桌子.打碎();

房子.书桌.书.看();

等等,相信你可以把他们"翻译"成AS了吧?

比如要把主场景停止播放,就是:

   _root.stop();

要MC停止播放:

_root.myMc.stop();

现在说相对路径,还是上面的例.假如给你下了一个命令:

修理房子里的红色的椅子.怎么表达呢?

就是:

房子.红色椅子.修理();

如果说修理你现在坐的这椅子,红色的?

还是兰色的?

这就要取决于你坐的哪个椅子了.那么相对的表达式就是:

我坐的椅子.修理();

这里为什么不这么写呢?

房子.我坐的椅子.修理();这样写是错的,因为我坐的椅子是不固定的,我说不定把椅子搬到外面去坐,那这个表达式就错了,因为椅子根本就不在房子里面.

换过来用FLASH实例说明.现在我想让主场景下的MYMC在一开始就不要播放,而是先停止.那你有什么办法捏?

你的办法可能是在主场景放入这个mc的那个祯写上:

 _root.myMc.stop();

这个是对的,但是一旦myMc的名字一变,你就得跟着改这句话了.

有没有办法不管这个MC怎么改,都会被我们同样的一句AS找到捏?

当然可以,前提是你的AS必须"坐在这个MC上".

进入Mc的编辑状态,在Mc的Timeline的第1祯些上this.stop();

这里的this也是FLASH的关键字,这个this指AS所在的这条Timeline.

现在不管你这个MC放哪里,命名是什么,反正坑顶会停下来.为什么捏?

因为AS"坐在MC上".

这个this是相对路径的关键字之一.必须要仔细理解它.另一个关键字就是_parent.如果理解了this.那么这个_parent并不难理解.举例哈:

房子(_root),桌子(mc_zhuozi),书(mc_shu) (括号内为mc实例名)他们的关系是:

房子.桌子.书.

_root.mc_zhuozi.mc_shu

在mc_zhuozi的Timeline里面写_parent.打扫();意思就是打扫房间.

在mc_shu的timeline里面写:

_parent.打扫(); 意思是打扫桌子.

_parent就是父级.桌子的_parent就是房子的timeline.书的_parent就是桌子的timeline.

绝对路径相对路径就到这里哈,

              

               文字字段和组件

1.常用指令

下面介绍使用动作脚本动态创建文本框.设置文本属性的几个常用指令.

MovieClip.createTextField()

作用:

动态创建文本框

语法:

my_mc.createTextField(instanceName,depth,x,y,width,heigth)

参数:

instanceName,指示新文本字段的实例名称,depth是一个正整数,指定新文本字段的深度;x是一个整数,指定新文本字段的X坐标;Y是一个整数,指定新文本字段的Y坐标;width是一个正整数,指定新文本字段的宽度;height是一个正整数,指定新文本字段的高度.

例如:

_root.createTextField("textBox",1,50,50,200,100);

textBox.text="这是我的第一个动态创建文本?

";

这段程序代码的功能是:

创建一个文本框,其实例名称为textBox,深度1,X50,Y50,宽度200,高度100.

TextField.removeTextField()

作用:

删除由createTextField创建的文本字段.

语法:

my_text.removeTextField()

例如:

textBox.removeTextField();删除textBox文本.

TextField._alpha

作用:

设置或获取由my_txt指定的文本字段的ALpha透明度值,有效值为0(完全透明)到100(完全不透明),默认值为100.

语法:

my_text._alpha

例如:

text1_text._alpha=30;//将名为text1_txt的文本字段的_alpha属性设置为30/100.

TextField.autoSize

作用:

控制文本字段的自动大小调整和对齐.

语法:

my_txt.autoSize

例如:

my_txt.autoSize="center";//将文本字段my_txt的autosize的属性值为"center"(中心).

TextField.background

作用:

设置文字字段背景是否填充.如果为true,则文字字段具有背景填充.如果为false,则文字字段没有背景填充.

语法:

my_txt.background

例如:

my_txt.background=false;//文本字段my_txt没有背景填充.

TextField.border

作用:

设置文本字段是否有边框.如果为true,则文本字段有边框.如果为false,则没有字段边框.

语法:

my_text.border

例如:

my_txt.border=true;//文本字段my_text有边框.

动态文本应用实例:

数字倒记时

这里我们利用动态文本制作一个10秒的倒记时器,影片中的数字自动从10变为9,8....,当变到0的时候停止,数字变化间隔1秒.

步骤1:

创建影片文档

影片文档 250*200,其他都保持默认.保存影片文档为"动态文本实例.fla".

            动作脚本入门——变量函数语法规范

现在我们来学习AS编程的基础知识,学习AS程序的一些基本结构。

通过这一节的学习,我们要从开始就养成正确阅读和书写AS程序的习惯。

首先,我们一起来看一段定义在一个按钮上的小程序:

on(release){

  varmyNumber=7;

  varmyString="FlashMx2004ActionScript";

  for(vari=0;i

      trace(i);

      if(i+3=8){

         trace(myString);

      }

   }

}

我们发现AS程序其实就是由一些命令数字和一些符号组成的。

当测试这个程序的影片,可以看到这小程序输出的结果为:

i是0—6的数值。

1.常量 

常量就是一种属性,指在程序运行中不会改变的量.例如上面的程序代码中的数值3.7.8和字符串"FlashMx2004ActionScript"都是常量.

逻辑常量true和False在编程的时候也经常用到.

2.变量

变量就是在程序运行中可以改变的量.例如上面的例子中的i,就是变量,它从0一直变到6.可以看出,我们在编写程序时往往需要储存很多的信息,就需要变量来储存这些信息.

Variables(变量):

储存了任意数据类型的标识符.

变量实际就是一个信息容器,容器本身总是相同的,但容器中的内容却可以修改.通过在影片播放时修改变量中的值,然后判断某些条件的真假等.例如,如果需要重复10次相同的命令,你就可以对命令的自行执行次数进行记数,判断次数是否满10,满10次就终止.

变量可以存放任何数据类型,包括数字值.如(myNumber).字符串值(myString).逻辑值.对象或电影剪辑等.

储存在变量中的信息类型也很丰富,包括:

url,地址.用户名,数学运算结果.事件发生的次数或按钮是否被单击等.

变量可以创建修改和更新.变量中储存的值可以被脚本检索使用.在以下示例中,等号左边的变量标识符,右边的则是赋予变量的值.

x=5;

name="Lolo";

customer.address="6617thStreet";

c=newColor(mcinstanceName);

 变量由2部分构成:

变量名和变量的值,

(1)变量名与规则

变量名必须一英文字母开头.

变量名称中间不能有空格,象boxsum就是一个错误的示范,如果是2个单词,可以在中间加下画线符号.如:

box_sum.

变量名称中不能使用除了"_"(下画线)以外的符号.

不能使用与命令(关键字)相同的名称,例如:

"var","new"等以免程序出现错误.

(2)变量的类型

变量的类型包括储存数值.字符串或其他数据类型.

在FLASH中,可以不直接定义变量的数据类型.当变量被赋值时,FLASH会自动确定变量的数据类型.例如:

X=3;

在表达式X=3中,FLASH将取得运算符右边的值,确定它是数值类型.此后的赋值语句又可能改变X的类型.例如X="HELLO"语句可以将X的数据类型改为字符串值.没有赋值的变量,其数据类型为undefined(未知的,不明确的).

AS会在表达式需要时自动转换数据类型.例如,当我们将一个值传递给Trace动作时,Trace会自动将其值改变为字符串并发送,

(输出)面板.在包含运算符的表达式中,AS会在需要时转换数据类型.例如:

在和字符串连用时,加号(+)运算符会将其他的运算项也转换成字符串.

Nextinline,"number"+7

as将数字7转换成为字符串"7",然后填加到第1个字符串的末尾,得到的结果是以下字符串:

"Nextinline,number7"

在调试脚本时,确定表达式或变量的数据类型是常用的手段。

使用Typcof运算符就可以作到这一点。

例如:

Trace(Typcof(VariableName));

使用Number函数,可以把字符串转换为数字值。

使用String函数可以把数字值转换为字符串值。

3).变量的作用域

所谓变量的作用域,是指能够识别和引用该变量的区域.也就是变量在什么范围内是可以访问的.在AS中有3种类型的变量区域:

本地(局部)变量:

在自身代码块中有效的变量(在大括号内).就是在声明它的语句块内(例如一个函数体)是可访问的变量,通常是为避免冲突和节省内存占用而使用.

时间轴变量:

可以在使用目标路径指定的任何时间轴内有效.时间线范围变量声明后,在声明它的整个层级(level)的时间线内它是可访问的.

全局变量:

即使没有使用目标路径指定,也可以在任何时间轴内有效.就是在整个的movie中都可以访问的变量.

(4)声明和使用变量

使用变量前最好使用Var命令先加以声名.在声名变量的时候,一般要注意以下内容:

*要声明常规变量,可以使用SetVarible动作或赋值运算符(=),这2种方法获得的结果是一样的。

   *要声明本地变量,可以在函数主题内使用Var语句。

例如:

 varmyNumber=7;

 varmyString="flashMX2004ActionScript";

   *要声明全局变量,可以在变量前使用_global标识符。

例如:

 _global.myName="global";

   *要测试变量的值,可以使用trace动作将变量的值的发送到输出窗口。

例如:

trace(i)

 trace(mystring)

就可以将变量i的值发送到测试模式的输出窗口中。

也可以在测试的模式的调试器中检查和设置变量值。

如果要在表达式中使用变量,则必须先声明该变量。

如果使用了一个未声明的变量,则变量的值将是mdenned,脚本也将产生错误。

在脚本中,变量的值可以多次修改。

在以下示例中,变量x被设置为15,在第2行中,该值被复制到变量y中,在第3行中,变量x的值被修改为30,但是变量y的值仍然保持为15,这是因为变量y不是引用了变量x的值,而是接受了在第2行传递的实际值15。

varx=15;

vary=x;

varx=30;

3.函数

函数(function)是什么捏?

函数就是在程序中可以重复使用的代码,你可以将需要处理的值或对象通过参数的形式传递给函数,然后由函数得到结果,从另一个角度说,函数存在的目的就是为了简化编程的负担,减小代码量和提高效率。

(1)系统函数

所谓系统函数就是FLASH内置的函数。

用户在编程的时候可以直接拿来使用。

下面是一些常用的系统函数。

Boolean:

转换函数,将参数转换为布尔类型。

GetVersion:

函数获取Flashplay的版本号。

ParseInt:

数学函数,将字符串分析为整数。

Escape:

将参数转换为字符串,并以URL编码格式进行编码,在这种格式中,将所有非字母数字的字符都转义为%十六进制序列。

IsFinite:

数学函数,测试某数字是否为有限数。

String:

将数字转换为字符串类型。

Eval:

函数返回由表达式指定和变量的值。

IsNN:

数学函数,测试某数字是否为NaN(不是一个数字)。

TargetPath:

返回指定电影剪辑的目标路径字符串。

Getproperty:

返回指定电影剪辑的属性。

Number:

转换函数,将参数转换为数据类型。

Unescape:

对URL编码的参数进行解码所得到的字符串。

GetTimer:

影片开始播放以来经过的毫秒数。

ParseFlost:

数学函数,将字符串分析为浮点数。

Object:

转换函数,将参数转换为相应的对象类型。

Array:

转换函数根据参数构造数组

(2)自定义函数

除了系统函数,我们在编写程序时还需要自己定义一些函数,用这些函数去完成指定的功能。

在FLASH中定义函数的一般形式为:

 function函数名称(参数1,参数2,。

,参数N){

           //函数体。

既函数的程序代码

}

假设我们要定义一个计算矩形面积的函数,可以这样:

functionareaOFBox(a,b){//自定义计算矩形面积的函数

returna*b;//在这里返回结果,也就是得到函数的返回值

}

你自定义了函数以后,就可以随时调用并执行它了。

调用执行函数的一般形式为:

函数名称(参数1,参数2,。

参数N);

假设程序中我们要调用上面自定义的areaOfBox()函数,可以这样:

area=areaOfBox(3,6);

trace("area="+area);

函数就象变量一样,被附加给定义他们的电影剪辑的时间轴,必须使用目标路径才能调用它们。

此处还可以使用_global标识符声明一个全局函数,全局函数可以在所有时间轴内有效,而且不必使用目标路径,这和变量很相似。

4.语法规范

(1)关键字:

关键字是AS程序的基本构造单位,它是程序语言的保留字(reservedWords),不能被作为其他用途(不能作为自定义的变量,函数,对象名).

AS中的关键字不是很多.

break 跳出循环体         instanceof返回对象所属的类(class)

case  定义一个switch语句     

      的条件选择语句块   new       使用构造函数(consturctor)创建一个                                     新的对象

continue

 跳到循环体的下一项目

 return

 在函数中返回值

 

default

 定义switch语句的默认语句块

 switch

 定义一个多条件选择语句块

 

delete

 清除指定对象占用的内存资源

 this

 引用当前代码所在的对象

 

else

 定义if语句返回为假时的语句块

 typeof

 返回对象的类型

 

for

 定义一个循环

 var

 声明一个本地变量(LocalVariable)

 

function

 定义一个函数语句块

 void

 声明返回值类型不确定

 

if

 定义一个条件语句块

 while

 定义一个条件循环语句块

 

in

 在一个对象或元素数组中创建循环

 with

 定义一个对指定对象进行操作的语句块

 

(2)运算符

运算符指定如何合并.比较或修改表达式中值的字符.也就是说通过运算来改变变量的值.

运算符所操作的元素被称为运算项.例如:

在以下语句中,加号(+)就是运算符,i和3就是运算项:

i+3

运算符包括:

*算术运算符:

+(加).-减.*(乘)./(除).%(求余数).++(递增).--(递减).

          *比较运算符:

<(小于)、>(大于)、<=(小于或等于)、>=(大于或等于)。

          *逻辑运算符:

&&(逻辑"和").||(逻辑"或").!

(逻辑"非").

下面是运算符优先级的列表.运算符的优先级,既几个运算符出现在同一表达式中时先运算哪一个,从上到下递减.

运算符

 描述

 

+

 一元(Unary)加

 

-

 一元(Unary)减

 

~

 按位(Bitwise)逻辑非

 

!

 逻辑非(NOT)

 

not

 逻辑非(Flash4格式)

 

++

 后期(Post)递加

 

--

 后期(Post)递减

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 经管营销 > 经济市场

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1