这篇文章主要为大家展示了“Flex3如何将AS2转化成AS3”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Flex3如何将AS2转化成AS3”这篇文章吧。
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)不合法。使用例子:
package{ importflash.display.MovieClip; publicclassRestParamExampleextendsMovieClip{ publicfunctionRestParamExample(){ traceParams(100,130,"two");//Output:100,130,two trace(average(4,7,13));//Output:8 } } } functiontraceParams(...rest){ trace(rest); } functionaverage(...args):Number{ varsum:Number=0; for(vari:uint=0;i<args.length;i++){ sum+=args[i]; } return(sum/args.length); }
以上是“Flex3如何将AS2转化成AS3”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注编程网行业资讯频道!