本文和大家重点讨论一下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)不合法。使用例子:
- 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
- sum+=args[i];
- }
- return(sum/args.length);
- }
当前文章:Flex3教程AS2转化成AS3的方法
网页地址:http://www.stwzsj.com/qtweb/news26/10076.html
网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联