请选择 进入手机版 | 继续访问电脑版
收藏本站腾讯微博新浪微博
点点网模板设计大赛 phpchina

经典论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

蓝色理想 最新研发动态 用悬赏 三天解决问题 解决访问速度慢 论坛支持农历生日 - 给官方提建议

论坛活动及任务 归纳网站最新活动 地图任务 邮件更新任务:保护帐号安全

积分换实物,来参加蓝色理想积分兑换吧! 联系招聘客服 蓝色理想帮你找工作! 万元奖励等你拿——点点网模板设计大赛

查看: 9765|回复: 9

[FLASH IDE] 【从AS2到AS3之一】常量&操作符&参数 [复制链接]

flashlizi 楼主
帖子
521
体力
2366
威望
131
发表于 2007-4-28 16:05:59 |显示全部楼层
随着Flash CS3正式版的发布,估计很多朋友都开始从AS2迁移到AS3了。不过AS3比AS2改变的实在太多,在as2中很多方法属性在as3中并不相同,甚至消失,而且目前帮助文档是E文的,现下的as3基础文章也并不多,因此特开此贴,集合一些基础性的要点,尽量以例子来说明,让大家更快更好的往AS3迁移。文中如有错误,敬请指正。有兴趣的朋友也可以一起来添加。

1、常量
先看AS2代码:
  1. var str:String;
  2. var num:Number;
  3. var boo:Boolean;
  4. var obj:Object;
  5. var notyped;
  6. trace(str+newline+num+newline+boo+newline+obj+newline+notyped);
  7. //return
  8. undefined
  9. undefined
  10. undefined
  11. undefined
  12. undefined
复制代码


再看AS3代码:
  1. var str:String;
  2. var num:Number;
  3. var boo:Boolean;
  4. var obj:Object;
  5. var notyped;
  6. trace(str+"\n"+num+"\n"+boo+"\n"+obj+"\n"+notyped);
  7. //return
  8. null
  9. NaN
  10. false
  11. null
  12. undefined
复制代码


从上面2个例子可以清楚的看到:在as2中String、Number、Boolean、Object的默认值都是undefined,而在as3中则分别为null、NaN、false、null。只有未作申明的变量的默认值才是undefined。因此,在as2中一个"undefined"打天下的时代已经过时了,在as3中更加明确。同时as2中还有一个常量newline在as3中已经取消,由"\n"替换。另外特别说明就是trace方法的功能也加强了,参数个数不限,因此上面可以改成trace(str,num,boo,obj,notyped)了。

2、操作符
这里只讨论instanceof。虽然as3中还保留了这个操作符,但as3中推荐用is代替它。而且is的用法更为灵活。
代码:
  1. var mystr:String="test";
  2. var mytest:Test = new Test();//Test is extends SuperTest
  3. trace(mytest instanceof SuperTest); //AS2 return false //AS3 return true
  4. trace(mystr instanceof String);//AS2 return false
  5. trace(mystr instanceof String);//AS3 return true
  6. trace(mystr is String);//AS3 return true
复制代码

从此例可以看出instanceof在as3中的比as2中有了变化。在as2中instanceof不会将原始类型转换为包装对象,因此在上面例子中的String验证中返回false,并且它对超类(如SuperTest)不起作用。而在as3中它只检查原型链,所以在第一个trace中会返回true。但是as3中instanceof并不支持接口,而is支持。
代码:
  1. var mytest:Test = new Test();//Test implements InterfaceTest
  2. trace(mytest is InterfaceTest); //AS3 return true
  3. trace(mytest instanceof InterfaceTest); //AS3 return false
复制代码


至于add、eq、gt、ge、<>、and、not、or、ne、lt、le等AS1的语法在as3中统统取消了。

3、参数
在AS3中增加了一个... (rest)这样的参数。它的作用是指明函数可以接收任意多个以逗号分隔的参数。AS3代码:
  1. function testfun1(param0, param1, ...arg)
  2. {
  3.         trace(arg is Array,arg,arg.length);
  4. }
  5. testfun1("param0","param1","param2","param3");
  6. //return: true param2,param3 2
复制代码

在这里...arg表示一个名为arg的数组。当运行testfun1后,arg=["param2","param3"]。还记得function有个arguments类么,当使用了...(rest)后,argumnets就无法获取了。但是如上例所示arg.length同样可以使用。但是并没有类似arguments.callee的这种方法,所以要使用...arg的时候确保不会使用arguments.callee的方法。
已有 1 人评分威望 收起 理由
mirycat + 1 原创内容

总评分: 威望 + 1   查看全部评分

西部数码顶级域名注册商39元抢注!

对酒当歌

银牌会员

帖子
436
体力
2602
威望
3
发表于 2007-4-28 17:08:53 |显示全部楼层
谢谢,支持一下
http://www.liuhuan.com
租服务器,上51IDC | [长沙]招聘:PHP经理10K/WEB前端6K/PHP开发6K

使用道具 举报

nang 

终极讨厌

金牌会员

帖子
1614
体力
3138
威望
8
发表于 2007-4-28 17:09:48 |显示全部楼层
这个帖子要学习,嘿嘿,谢谢楼主

使用道具 举报

海海

银牌会员

帖子
661
体力
1341
威望
0
发表于 2007-4-28 17:17:06 |显示全部楼层
恩,不错,顶楼主

使用道具 举报

帖子
745
体力
2237
威望
0
发表于 2007-4-29 14:09:52 |显示全部楼层
很好。。。。

使用道具 举报

wsw123 
帖子
432
体力
2144
威望
0
发表于 2007-4-29 15:57:15 |显示全部楼层

使用道具 举报

帖子
745
体力
2237
威望
0
发表于 2007-4-29 18:03:21 |显示全部楼层
很多啊   可惜有些看不懂啊。。。
改了好多啊。。。
有点像JAVA。。。。。。。。。

使用道具 举报

amamam 
帖子
716
体力
1398
威望
0
居住地
福建省 厦门市
发表于 2007-4-30 00:17:55 |显示全部楼层
改太多了呀

使用道具 举报

东山老林

中级会员 手机认证 

帖子
134
体力
570
威望
0
发表于 2007-5-24 17:14:13 |显示全部楼层
路虽远,行必至!

使用道具 举报

帖子
104
体力
414
威望
0
发表于 2007-5-27 22:11:20 |显示全部楼层
好..不错啊..

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

Archiver|手机版|安久科技提供CDN|blueidea.com ( 京ICP备05002321号 )  

GMT+8, 2012-2-13 12:33 , Processed in 0.117661 second(s), 11 queries , Gzip On, Memcache On.

Powered by Discuz! X2

© 2001-2011 Comsenz Inc.

回顶部