变量是什么? 可以说就是存放信息的容器(更确切的说是指向内存空间中某个存贮位置的指针)
全局变量, 顾名思义就是在整个 Movie 中都可以访问的变量. 它的声明比较特殊:
_global.MyGlobalString = "这是一个全局字符串变量";
声明使用了一个 _global 标识符和点语法(Dot Syntax, 将在后面的章节讨论). _global 标识符是在 Flash 6 中新增加的, 用于创建全局变量, 函数, 对象和类(Class, 不清楚类是什么的话可以看看 C++ 的书).
总的来说 _global 是一个与最底层 _level0 并列的对象. 所有的全局变量, 函数, 对象其实就相当于是它的属性, 方法, 子对象. 关于它的具体内容可以查阅帮助文件, 一般我们只要懂得用就行了.
全局变量会被同名的时间线变量和局部变量屏蔽(Obscured), 这时我们就要通过别的方式来访问它了. 看看下面的例子:
//定义全局变量
_global.x = "Global";
//一个简单的函数
function show() {
trace("没有局部变量时函数内: "+x);
var x = "Local";
trace("有局部变量时函数内: "+x);
trace("有局部变量时调用时间线变量: "+this.x);
}
//测试
trace("------没有时间线范围变量时------");
show();
trace("直接调用: "+x);
//设置时间线变量
x = "Timeline";
//测试
trace("-------有时间线范围变量时-------");
show();
trace("直接调用: "+x);
trace("有时间线范围变量时调用全局变量: "+_global.x);
由上例的结果可以看出, 在当前时间线范围内有和全局变量同名的变量时, 直接通过变量名只能访问时间线范围内的同名变量, 这时应该用 _global.变量名 来调用全局变量. 同样局部变量也会屏蔽时间线变量(这时可以用 this.变量名 来调用时间线变量)和全局变量(这时可以用 _global.变量名 来调用全局变量).