• 【设为首页】
  • 【收藏闪客居】
当前位置:主页>FLASH AS 编程>AS基础篇>AS 3.0>文章内容
  • As3 理解作用域(翻译)
  • 来源: 作者: 2007-09-29 【

在ActionScript 1和2中,在同一个作用域里定义一个变量两次,不会有错。比如:


CODE:[Copy to clipboard]// ActionScript 1 and 2
var i:Number = 1;
var i:String = 2;
[code]

但是这种情况在ActionScript3里已经被禁止了。在ActionScript3里,一定你在一个作用域里定义了一个变量,那么在这个作用于里这个变量就无法再被定义或者改变类型了。当然,这并不意味着你就无法更改变量的值了,只是var关键字在一个作用域里对每个变量只能用一次。

[code]
// ActionScript 3
var i:Number = 1;
var i:String = 2; // 错误,变量重复定义
在AS3中,如果你需要一个新的类型,你必须创建一个新的变量来使用这个类型。而且,如果你有同时使用两次var的时候,比如说,在if语句的两个分支语句里,你必须在if语句外面使用var声明,然后在if,else块里给变量赋值,而不要在块里直接使用var。比如:


CODE:[Copy to clipboard]// ActionScript 3 INCORRECT
// (but works in AS1 and AS2)
if (my_btn.enabled == true) {
    var returnValue:Number = 1;
}else{
    var returnValue:Number = 0;
}
if (provideAsString == true) {
    var returnValue:String = "1";
}else{
    var returnValue:String = "0";
}
正确的方式应该是:


CODE:[Copy to clipboard]// ActionScript 3 CORRECT
var returnValueNum:Number;
var returnValueStr:String;
if (my_btn.enabled == true) {
    returnValueNum = 1;
}else{
    returnValueNum = 0;
}
if (provideAsString == true) {
    returnValueStr = "1";
}else{
    returnValueStr = "0";
}
注意,这里用来两个变量来代表1,因为他们的类型不一样。而且,他们的声明放到了if的前面,而不是在if块里声明两次。
还有一种方法,就是使用一个 * 类型的变量。


CODE:[Copy to clipboard]// ActionScript 3 ALSO OK
var returnValue:*
if (my_btn.enabled == true) {
    returnValue = 1;
}else{
    returnValue = 0;
}
if (provideAsString == true) {
    returnValue = "1";
}else{
    returnValue = "0";
}



上一篇:as3的标签声明   下一篇:Action Script 3.0 官方中文资料汇总
  • 用户名:新注册) 密码: 匿名评论
  • 评论内容:(不能超过250字,需审核后才会公布,请自觉遵守互联网相关政策法规)

Copyright © 2006-2008 flashas.net All Rights Reserved.
网站内容咨询: admin#flashas.net (#为@) 联系QQ:40777822 浙ICP备06033001号
(本网站最佳浏览解析度为1024*768, 建议使用IE 6.0或以上版本浏览器。)