[AS3]Basic notes

1.

AS2的任何对象都可以在运行时动态添加属性和方法

AS3的一个特色是可以将外部的AS文件和fla文件绑定,编译时将SWF堪称是这个类的一个实例。

2.所有的变量都是对象

var h;   var h:* 两个都未定义对象的类型,默认为untyped

 

变量的命名规则:骆驼命名法(首个小写,其余单词首个大写),最小长度、最大信息量,尽量避免数字,尽量使用英文单词

 

3.值对象

值对象是一种不变对象,值对象仍然是对对象的引用,但是当值对象被赋予一个新的值的时候,系统给这个新的值创建一个新的对象,而被赋值的值对象也改为存了这个新的对象的引用,原来的老对象因为不再被使用而被回收。

优点(相比于直接存值):可以提高效率,节省内存

假如有1000个对象,存的值全部是“abcdef,那么用值对象存的话只要有一个内存对象存了这个值,1000个对象都是存的对这个对象的引用。

 

4.常量

var改成const就可以,在程序中,如果可以的话,应提倡使用常量对象

 

5.Object对象可以动态添加属性,也可以动态添加方法;

如果在运行时才知道成员的名字,就需要使用数组运算符([])

如:var kingda:Object={};

if(i%2)property=”name” else property=“名字”;//也可以直接使用kingda[“name”]=”kfq”

kingda[property]=”kfq”;

使用的时候由于也不确定对象成员的名称,所以可以遍历对象成员,如:

for(var i in kingda){trace(kingda[i]);

6.当判断一个string类型数据能否转换成数值类型时,不能用Number(“string”)==NaN,这样得到的结果永远是false,应该用!Number(“string”);

 

7=====(全等)运算符

对于==,如果两边的数据类型不同,则会进行类型转换后再进行比较,而对于===运算符,如果类型不同,则返回false,但是===intuintNumber(没包括Boolean)类型数值一视同仁。

对于两边都是NaN的情况,=====均返回false,而两边分别是undefinednull时,==返回true===返回false

 

>>=<<=

如果两边的数据可以转换成数值,则转换成数值后再进行比较,如果不能转成数值,则返回false

 

8typeof 用字符串形式返回对象的类型,如:trace(typeof(10));输出的结果为:Number

注:返回的类名不一定是其小写

in用来判断一个对象是否作为另一个对象的键(Key)或索引,存在返回true,不存在返回false,如:

var a:Array=[“fae”,”eal”,”fjeia”];

trace(2 in a);//true;

trace(3 in a);//因为只有3个元素,所以最大的索引为2,因而返回false

 

var b:Object={ary:a,name:”kfq”};

trace(“ary” in b);//true,因为“ary”确实为b的键

trace(“name” in b);//true;

 

9delete

AS2中,用来删除对象的任意属性,但在AS3,只能用于删除对象的动态属性了

 

10for each ….in for in …

两者均可以用来枚举一个集合中的所有元素,拥有可以枚举属性的对象都可以成为集合,而可以枚举的属性一般都是动态属性,而对于非动态类的对象,用枚举无法得到结果。

 

for each …in 枚举变量代表的是集合的成员,而for …in的枚举变量代表的是键,必须通过数组访问副([])加上这个键,才能访问到集合成员

 

11breakcontinue

   break是完全结束本循环,continue是跳过本循环的这一次,进入下一次,但是它们都是只影响本身这一级的循环,并不影响到它们的父循环。

breakcontinue标签,跟C里面的goto用的标签一样,对各级循环设定一个标签名,格式为:“标签名”:就可以了,然后break “标签名//直接结束这一级循环

continue “标签名//调过一次这一级的循环

 

12switch

   switch是用===运算符来比较switch括号里的值和case后面的值

 

13.语句定义法和函数定义法函数

对于this,如果使用语句定义法, this牢牢指向当前函数定义的域;如果使用函数定义法,则this指向当前函数附着的对象。而callapply只能改变函数定义法的this指向,而不能改变语句定义法中this的指向。

       对于函数定义法,它的函数不像对象那样独立的存在,相当于一个匿名函数,当持有这个函数引用的数组或对象脱离作用域或由于其他原因变得不可再用,它将会被回收。

 

14.参数

       AS3中所有的参数都是引用传递,因为基元数据类型是不变对象,传引用和传值的效果一样。关键字arguments可以用来获得参数的信息,使用“…rest”三个点关键字可以给函数的参数设置不定个数,所有的参数存在数组rest之中。

 

 

 

15.函数

       一切皆对象,因而函数也是对象,任何函数可以看做是Function类或其子类的一个对象。

代理函数:

       即设定一个Function变量,根据不同的情况动态的让其指向不同的函数。

 

函数执行队列:

       可以建立一个数组对象,用来存储各个函数

 

var funcAry:Array=new Array();

funcAry.push(aFunc);funcAry.push(bFunc);….

调用的时候,funcAry[i](….参数)

 

这样可以组合一系列的操作。

 

 

 

二.

 

1.  ClassObject

Class是用来描述数据结构和行为方式,而Object就是有这些数据结构和行为方式的具体部件,就好比如Class是电路图,而Object就是按这张电路图做出的一块电路板。

Object泛指一切有具体状态和行为的数据集合。遵从某个Class描述的对象,则又称为这个Class的实例。对象和实例,没有什么本质的区别,可以互换。

2.  new

new创建一个新的对象,new关键字后面跟的实际上是类的构造函数,而是类名,所以可以把构造函数赋值给另一个Function类型的变量,然后再new这个新的变量,也可以新建一个类的实例。

 

3.  构造函数

构造函数不能有返回值,但是可以用return来控制流程

4.  this

this只限于实例属性和实例方法。因为this关键字必须要指代一个具体的实例,而静态的方法和静态属性不和任何的实例相关联,因此this关键字不用用在静态的方法中,也不能用来访问静态属性。

使用的场合:

1)  向第三方提供对象自身的引用,如:

package{

import org…...GraphicTool;

import flash.display.Sprite;

class Foo extends Sprite{

       public function Foo(){

              GraphicTool.drawRect(this,0,0,100,50);

       }}}

       2)return结合使用,在类方法中返回自身的引用

5package内只能包括一个类,但是在其外可以包括别的类,不可与文件同名,属于包外类,只有当前文件的成员类可以访问。

6.封装从大的模块到小的模块,再到具体的类。在AS3中,即使使用全饰路径,也必须导入包

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值