文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

Flex3如何将AS2转化成AS3

2023-06-17 15:19

关注

这篇文章主要为大家展示了“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”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注编程网行业资讯频道!

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯