使用提示,选中一个关键帧,然后点击F9弹出AS代码编写框,写好之后可以Ctrl+Enter运行,汗,咋觉得这么像qq……
1. 通常一个强类型语言的数据类型的数据类型的定义都是在变量名之前的,弱类型语言一般定义成var,或者干脆不定义。但是ActionScript比较奇怪,如果不强调var会报错,但是却可以不说明数据类型。如果说明数据类型的话要在变量后面跟个:(例如 var count:int = 0;),然后声明其数据类型。觉得这样就模糊了强类型语言与弱类型语言之间的界限了,说不上好与不好,习惯问题吧。
2. 函数的声明也是这样的,前面用关键字function说明后面这段东西是函数,参数跟在函数名后面,然后括号后面又一个冒号,后面跟着返回值类型(例如 function test(a:int, b:int):int{return a+b}),这种申明方式还真是……好别扭……好吧,习惯问题,赶紧习惯……
3.函数有两种定义方法,一种是语句定义法,声明方式如上条所述。另外一种是表达式定义法,声明方式如例子中示:var test:Function = function(a:int, b:int){return a+b;}。据说平时应当尽量使用语句定义法,但是,这个方法不是动态类的, 一些高级函数技巧不能用于使用函数语句定义法定义的函数,而函数表达是定义法定义的函数是动态类的。另外,这两种定义方法是有区别的,使用表达式定义法需要先声明后使用,如果在声明之前使用会报错(应该是编译时错误)。
4.AS3没有内置枚举类型,要用static、const、final等关键字尽量规范的去自己实现枚举。
5.AS3不支持方法重载,这个太损了……不过可以在方法中定义不同的逻辑分支,然后不同的逻辑分支调用不同的函数。方法的返回值设置成Object或者*,嗯,*这种返回值实在是太狠了,随便返回。另外函数的参数定义法也够狠的,在参数前面加三个点,形如“...args”,就可以输入一串参数……这太颠覆了……这让我们正统的写了n年没水平的C/C++/C#的人情何以堪啊……
6.类的定义,一个类只有定义在跟它同名的文件中才对外可见,否则不可见。如果这个文件中有package关键字,这个关键字后面的花括号里只能定义一个class,而且这个类必须跟文件名同名。花括号外随便定义,但是类名不能跟文件名相同。包外类只能被这个文件访问。有点像私有类哦……不过其实就是不同的访问控制权限吧,理解起来也没有什么难度。
7.貌似很像Java啊,默认访问控制级别是internal,而且调用什么的时候要引入包。据说是用全饰路径也必须先导入包。所以用什么先引入什么是个好习惯啊~构建包名也是一门学问啊……这还是跟Java的构建方式比较像,从大到小逆向命名。比如cn.edu.cau.xx.xxx.xxx等。
8.嗯,命名空间,基本上没怎么看明白,不过开始的话基本上用不上吧……高级应用慢慢来……
9.静态成员不可以被继承,但是可以访问。废话,如果是公有变量谁不能访问……不过不能继承是要注意的。这个有点变态啊,可以直接使用那个变量,但是那个变量不是子类的成员。
10.书里把继承说的太复杂了,其实跟C#、Java、C++几乎无区别,是之前的版本继承的时候不一样,AS3不需要想太多。final终止继承,貌似还是跟C#很像啊,不过C#我不太记得了。
11.今天在看正则表达式,之前总觉得这个东西这么高深,原来就是匹配字符串啊,而且这个字符串的匹配其实非常简单,可能内部机制比较麻烦吧,要记得东西比较多。但是说白了不就是转义字符和普通的字符放在一起,然后还能循环的那种么……为啥我以前觉得这玩意高深呐~孤陋寡闻,少见多怪之……
12.异常,嗯异常处理和C#差不多,照用就对了。不过因为异常处理成本比较高,所以尽量少用。这边提出了“三大注意,三大忌讳”,要提倡及时处理异常,对不同的异常区别对待还有记录异常,总结经验。不要空代码处理异常,不要用宽泛的异常对待具体问题,还有就是之前说的,少用异常。异常在AS中就直接叫Error了,没有Exception这一说法,所以抛异常还有自定义异常的时候要注意,别手滑继承Exception去……
13.补充之前落下的。AS的类型转换可以将is和as这两个关键字并列使用。形如if(xx对象 is YY类){(xx对象 as YY类).zz方法();}其中,is返回true或者false,as返回正确的对象类型或者null。需要注意的是,如果返回的是null的话,有可能导致程序无法正常执行,此时可以考虑强制转换+异常解决这个问题。