论坛交流
首页办公自动化| 网页制作| 平面设计| 动画制作| 数据库开发| 程序设计| 全部视频教程
应用视频: Windows | Word2007 | Excel2007 | PowerPoint2007 | Dreamweaver 8 | Fireworks 8 | Flash 8 | Photoshop cs | CorelDraw 12
编程视频: C语言视频教程 | HTML | Div+Css布局 | Javascript | Access数据库 | Asp | Sql Server数据库Asp.net  | Flash AS
当前位置 > 文字教程 > Flash AS编程教程
Tag:2.0,3.0菜鸟,游戏,,cs,技巧,源码,,文本,文字,函数,音乐,随机,拖拽,asp,access,xml,mc,视频教程

As3 理解作用域(翻译)

文章类别:Flash AS编程 | 发表日期:2008-10-6 18:36:28


在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";
}
视频教程列表
文章教程搜索
 
Flash AS推荐教程
Flash AS热门教程
看全部视频教程
购买方式/价格
购买视频教程: 咨询客服
tel:15972130058