FLASH变量和作用域的详细分析
关于变量和作用域
变量的作用域是指识别(定义)变量的区域和可以引用变量的区域。变量在其中被识别的区域可能在某个时间轴中或在某个函数内部,也可能在整个应用程序中是全局已知的。有关作用域的更多信息,请参见关于作用域和目标设定。
在使用 ActionScript 开发 Flash 应用程序时,了解变量作用域是非常重要的。作用域不仅表示可以在什么时间和位置引用变量,还表示一个特定的变量可以在应用程序中存在多长时间。在函数体中定义变量时,一旦指定的函数结束,变量就不再存在了。如果您试图在错误的作用域内引用对象或引用已过期的变量,您的 Flash 文档中将会出错,这将导致出现意外情况或使功能受到破坏。
在 ActionScript 中有三种类型的变量作用域:
a.全局变量和函数对于文档中的每个时间轴和作用域均可见。因此,全局变量是在代码的所有区域中定义的。
b.时间轴变量可用于该时间轴上的任何脚本。
c.本地变量在声明它们的函数体(由大括号界定)内可用。因此,本地变量仅是在代码的一部分中定义的。
全局变量
全局变量和函数对于您的文档中的每一时间轴和作用域而言都是可见的。要声明(或创建)具有全局作用域的变量,请在变量名前使用 _global 标识符,而不要使用 var = 语法。例如,以下代码创建全局变量 myName:
var _global.myName = "George"; // 全局变量的错误语法
_global.myName = "George"; // 全局变量的正确语法
但是,如果您使用与全局变量相同的名称初始化一个本地变量,则在处于该本地变量的作用域内时对该全局变量不具有访问权限,如下面的示例所示:
- _global.counter = 100; // 声明全局变量
- trace(counter); // 访问全局变量并显示 100
- function count():Void {
- for (var counter:Number = 0; counter <= 2; counter++) { // 本地变量
- trace(counter); // 访问本地变量并显示 0 到 2
- }
- }
- count();
- trace(counter); // 访问全局变量并显示 100
此示例只是表明在 count() 函数作用域内未访问该全局变量。但是,如果加上一个 _global 前缀,您就可以访问具有全局作用域的变量了。例如,如果为 counter 加上前缀 _global,就可以访问它,如下面的代码所示:
trace(_global.counter);
您不能为在 _global 作用域中创建的值指定严格的数据类型,因为在指定数据类型时必须使用 var 关键字。例如,您不能执行以下操作:
_global.foo:String = "foo"; //语法错误
var _global.foo:String = "foo"; //语法错误
热门文章推荐
- [HLS]做自己的m3u8点播系统使用HTTP Live Streaming(HLS技术)
- [FMS]FMS流媒体服务器配置与使用相关的介绍
- [AS3]什么是M3U8,与HTML5的区别是什么
- AS2.0 让flash自适应全屏,并且不自动缩放
- [AS3]as3.0的sound类常用技巧整理
- [AS3]as3与ByteArray详解、ByteArray介绍、ByteArray用法
- 关于RTMP,RTMPT,RTMPS,RTMPE,RTMPTE协议的介绍
- [JS]分享浏览器弹出窗口不被拦截JS示例