Flex3教程 AS2转化成AS3的方法

开发 后端
本文向大家简单介绍一下Flex3教程中AS2转化成AS3的方法,AS3的方法修饰符在AS2的基础上增加了protected,internal,final和override,并且private的语义有变化。

本文和大家重点讨论一下Flex3教程中AS2转化成AS3的方法(Method),AS3的方法修饰符在AS2的基础上增加了protected,internal,final和override,并且private的语义有变化。无返回的关键字Void变成了void。方法参数的设定也有一些变化。

Flex3教程 AS2转化成AS3的方法(Method)

AS2和AS3差异点介绍:

AS3的方法修饰符在AS2的基础上增加了protected,internal,final和override,并且private的语义有变化。无返回的关键字Void变成了void。方法参数的设定也有一些变化。
private关键字修饰后代表此方法只能被本类访问。这变得和Java语言一样了。而在AS2中,private相当于下面要说的AS3的protected。
protected关键字修饰后代表此方法只能被自己和自己的子类访问,这和Java语言的protected关键字意义一样,学过Java的朋友应该很熟悉。
internal关键字修饰后代表此方法只能被同一包里的类访问,这和Java语言的缺省方法权限也一样。
final关键字修饰后代表此方法不能被覆盖。同样,和Java语言也是一样的。

Flex3教程中override关键字修饰那些覆盖父类方法的方法,C#程序员可能非常熟悉这个关键字,但是Java程序员可能有些不太理解,覆盖……还需要关键字?我这里讲一个我以前在Java&AS2时代遇到的麻烦,有一次,我写一个Text组件,继承自JSDK的JTextComponent类,我这个组件功能比较多,因此方法也比较多,其中有一个方法名叫updateText(具体名字我忘记了,这里随便用一个)。这个组件虽然功能多,但是都很简单,逻辑也很清晰,但是始终会发生很奇怪的错误,反复检查了三千七百八十六遍代码,还是找不到错误。***你猜错误在什么地方?就在updateText这里,原来JTextComponent也有这个方法,我又写了同名的这个方法,因此就错误地覆盖了JTextComponent的那个方法,当然,不能正常工作了。你想想,要是覆盖的方法都必须加上override关键字才能编译通过,那么我在编译的时候就会知道这里不该用这个名字了,也就不会浪费那么多时间了。简单总结就是:override必须出现在覆盖父类方法的方法前面,以避免无意的错误覆盖。

◆override必须出现在protected,internal,public的前面。按照逻辑,你可以分析知道override不能出现在private和final的前面。
Void变成了void,这个只是字符变了,语义没有变,查找替换即可。
Flex3教程中参数设置方面,变化的主要有:
参数数量严格检查,在AS2中,方法申明中如果有n(n>=0)个参数,在调用的时候,可以传x(x>=0)个参数,当xn的时候,多于的参数则被忽略,也就是说,传入的参数个数可以不跟申明的个数一致。而在AS3中,则必须一致。

参数缺省值设定,在AS3中可以有这种用法,申明functionmethod(x:int=1,y:int=2),调用时method()代表method(1,2),method(x)代表method(x,2)。这和C++语言是一样的,熟悉C++的朋友可以跳过这一段了。也就说,缺省参数可以让调用的时候少传入一些参数,没有传入的参数被缺省值代替。注意缺省参数必须是从后往左连续的,也就是说所有的缺省参数必须在必备参数的后面。这样的用法method(param1:int,param2:String=””,param3:Number=6)可以,而method(param1:int=1,param2:String=””,param3:Number)不可以。

任意数量参数,为了实现任意数量参数的方法,AS3增加了一种模式,method(…args)模式,
…args(args可以是任意合法变量名)代表一个数组,你可以通过遍历数组的方式得到args内所有参数。注意…args必须是***一个参数,即是说method(param:int,…args)合法,而method(…args,param:int)不合法。使用例子: 

  1. package{  
  2. importflash.display.MovieClip;  
  3. publicclassRestParamExampleextendsMovieClip{  
  4. publicfunctionRestParamExample(){  
  5. traceParams(100,130,"two");//Output:100,130,two  
  6. trace(average(4,7,13));//Output:8  
  7. }  
  8. }  
  9. }  
  10. functiontraceParams(...rest){  
  11. trace(rest);  
  12. }  
  13. functionaverage(...args):Number{  
  14. varsum:Number=0;  
  15. for(vari:uint=0;i<args.length;i++){  
  16. sum+=args[i];  
  17. }  
  18. return(sum/args.length);  
  19. }  

 【编辑推荐】

  1. Flex 3教程中AS2和AS3可视元素的转换
  2. 解析Flex3教程中AS2和AS3之间事件转换
  3. 技术前沿 看Flex客户端缓存技术如何使用
  4. 解析Flex全屏模式设置方法
  5. Flex内存泄露解决方法和内存释放优化原则
责任编辑:佚名 来源: csdn.net
相关推荐

2010-08-02 10:41:06

Flex3教程

2010-08-02 10:18:06

Flex3教程

2010-08-02 10:28:26

Flex 3教程

2010-08-02 10:50:55

Flex3

2009-07-16 14:09:24

Flex3到Flex4

2010-07-27 09:37:44

Flex

2010-08-02 13:04:04

Flex3

2010-08-02 12:44:01

Flex3Flex4

2010-07-01 12:09:46

UML类图

2010-07-28 11:12:19

Flex正则表达式

2009-08-28 14:54:20

C# byte数组

2021-10-08 13:45:23

大数据数据科学家货币

2010-08-12 15:10:17

Flex4

2010-03-30 16:56:01

Oracle函数

2010-08-09 12:47:00

Flex4beta

2015-06-05 11:24:17

WPS金山软件

2014-03-19 10:44:51

Linuxpng图片

2011-09-07 15:38:33

Ubuntuccd2isonrg2iso

2010-08-02 14:04:29

Flex4教程

2010-08-11 13:08:36

Flex3
点赞
收藏

51CTO技术栈公众号