ACTIONSCRIPT简介

ActionScriptMacromedia(现已被Adobe收购)为其Flash产品开发的,最初是一种简单的脚本语言,现在最新版本3.0,是一种完全的面向对象的编程语言,功能强大,类库丰富,语法类似JavaScript,多用于Flash互动性、娱乐性、实用性开发,网页制作RIA应用程序开发。

ActionScript是一种基于ECMAScript的脚本语言,可用于编写Adobe Flash动画和应用程序。由于ActionScript和JavaScript都是基于ECMAScript语法的,理论上它们互相可以很流畅地从一种语言翻译到另一种。不过JavaScript的文档对象模型(DOM)是以浏览器窗口,文档表单为主的,ActionScript的文档对象模型(DOM)则以SWF格式动画为主,可包括动画,音频,文字和事件处理

如果你学过Java/C#/JavaScript,那么学习ActionScript3将非常快。其实各种语言的基本数据类型、语句、函数、类、包等用法都大同小异。下面将简单介绍ActionScript3的基本语法,着重与Java/C#/JavaScript不同的地方。

1.  数据类型

什么是数据类型?数据类型:

l 一定的数据在计算机内部的表示方式

l 该数据所表示的值的集合

l 在该数据上的一系列操作

使用数据类型来规定数据的描述和行为,有利于数据的逻辑描述和正确性检查。任何一门编程语言都包含基元数据类型、复杂数据类型。

ActionScript3中声明变量的格式如下:

var 变量名:数据类型
var 
变量名:数据类型 = 
;

说明:定义变量时可以不指定数据类型,但是最好指定数据类型,当数据类型不一定时可以使用*表示(var 变量名:*

1.1基元数据类型

基元数据类型:我们在编程中频繁使用到的数据类型,语言的基本构成单元。

走在网页游戏开发的路上(二)_游戏开发

说明:在ActionScript3中数字存在上述三种类型——int、uint、Number,而且Number可以表示整数、无符号整数、浮点数。那该如何选择使用呢?能够使用整数时优先使用int和uint;整数有正负之分时,请使用int。只处理正整数,优先使用uint(如处理和颜色相关的数值时,使用uint);碰到或可能碰到小数点时使用Number

1.2复杂数据类型

复杂数据类型:是相对基元数据类型而言的,复杂数据类型由一些基于数据类型组成。如数组Array,可以直接由一些数字或字符串作为元素组成。复杂数据类型还可以由一些复杂数据类型组合而成,如二维数组,Object对象它们包含3个数组。

走在网页游戏开发的路上(二)_游戏开发_02

走在网页游戏开发的路上(二)_游戏开发_03

运算符

ActionScript3和一般编程语言一样支持以下运算符,而且功能一样:

l 赋值运算符(=

l 算术运算符(+、-、*、/、%

l 算术赋值运算符(+=、-=、*=、/=、%=

l 关系运算符(==、!=、>、<、>=、<=

l 逻辑运算符(&&、||、!

l 三元运算符(?:

除此之外,ActionScript还有关系运算符:全等运算符===、不全等运算符(!==,它们与==、!=的区别在于在进行比较时不会进行类型转换(唯一例外的是把int、uint、Number看成是一样的数据类型)。

3. 流程控制

ActionScript3和一般编程语言一样支持以下流程控制功能:if-else、while、do-while、for,用法也相同。但同时还支持for…in、for each…in两种新的流程控制。它们用来枚举一个集合中所有的元素。所谓枚举,就是挨个访问集合中所有的元素。那跟for有什么区别呢,引入它们有什么好处呢?

遍历数组时,我们可以通过索引和数组长度来遍历所有的元素。但是,如果使用Object时怎么办?在Object中,成员只可以通过成员的名字字符串(即键值对中的“键”)访问,并不拥有数组索引递增的规律。那么为了访问像Object这样的非数字索引的集合,必须引入另外一种内建机制,在不知道成员的名字时,仍然可以访问到每个成员。这就是for…in、for each…in被设计的原因。

那么for…infor each…in之间有什么异同呢?for…in的枚举变量代表的是键,必须通过数组访问符([])加上这个键,才能访问到整个集合成员。而for each…in的枚举变量则直接代表集合中的成员。如:

for…infor each…in

var dict:Object = { a:1, b:2, c:3 };

for (var k:* in dict)

{

trace("key:" + k

+ "\tvalue:" + dict[k]);

}

for each(var j:* in dict)

{

trace(j);

}

//输出:

key:a value:1

key:b value:2

key:c value:3

1

2

3


由此可以得出:当程序需要使用键的信息时,用for…in;只需要访问集合成员时,那么使用for each…in更方便。

BREAKCONTINUE

break和continue用来控制循环流程,在循环体内使用。break用来直接跳出循环,continue用来结束当前循环进入下次循环。

在嵌套循环中,break和continue只能控制当前循环流程,如果想最里层循环直接跳出等,在别的语言中使用break和continue是没有用的。因此,在ActionScript3中它们还有更强大的流程控制功能:标签用法。这跟c语言goto语句中的标签用法类似。给每层循环命名,然后使用break 标签名和continue 标签名指定对哪层循环进行控制。

图片来源:http://www.hp91.cn/  网页游戏