确定变量的范围和声明变量

变量的范围 是指变量在其中已知并且可以引用的区域。在动作脚本中有三种类型的变量范围:

注意:您创建的动作脚本 2.0 类支持公共、私有和静态变量范围。有关更多信息,请参见控制成员访问创建类成员

本地变量

若要声明本地变量,请在函数体内部使用 var 语句。本地变量的使用范围只限于它的代码块,它会在该代码块结束时到期。没有在代码块中声明的本地变量会在它的脚本结束时到期。

例如,变量 ij 经常用作循环计数器。在下面的示例中,i 用作本地变量;它只存在于函数 makeDays() 的内部:

function makeDays() {
  var i;
  for( i = 0; i < monthArray[month]; i++ ) {

    _root.Days.attachMovie( "DayDisplay", i, i + 2000 );

    _root.Days[i].num = i + 1;
    _root.Days[i]._x = column * _root.Days[i]._width;
    _root.Days[i]._y = row * _root.Days[i]._height;

    column = column + 1;

    if (column == 7 ) {

      column = 0;
      row = row + 1;
    }
  }
}

本地变量也可防止出现名称冲突,名称冲突可能会导致应用程序出现错误。例如,如果使用 name 作为本地变量,则可以用它在一个上下文中存储用户名,而在另一个上下文中存储影片剪辑实例名称;因为这些变量是在不同的范围中运行的,所以它们不会有冲突。

在函数体中使用本地变量是一个很好的习惯,这样该函数可以充当独立的代码。本地变量只有在它自己的代码块中才是可更改的。如果函数中的表达式使用全局变量,则在该函数以外也可以更改它的值,这样也更改了该函数。

可以在定义本地变量时为其指定数据类型,这有助于防止将类型错误的数据赋给现有变量。有关更多信息,请参见严格数据类型指定

时间轴变量

时间轴变量可用于该时间轴上的任何脚本。要声明时间轴变量,应在该时间轴中的所有帧上都初始化这些变量。应确保首先初始化变量,然后尝试在脚本中访问它。例如,如果将代码 var x = 10; 放置在第 20 帧上,则附加到第 20 帧之前的任何帧上的脚本都无法访问该变量。

全局变量

全局变量和函数对于您的文档中的每一时间轴和范围而言都是可见的。若要创建具有全局范围的变量,请在变量名称前使用 _global 标识符,并且不使用 var = 语法。例如,以下代码创建全局变量 myName

var _global.myName = "George"; // 语法错误
_global.myName = "George";

但是,如果您使用与全局变量相同的名称初始化一个本地变量,则在处于该本地变量的范围内时对该全局变量不具有访问权限:

_global.counter = 100;
counter++;
trace(counter); // 显示 101
function count(){
  for( var counter = 0; counter <= 10 ; counter++ ) {
  trace(counter); // 显示 0 到 10
  }
}
count();
counter++;
trace(counter); // 显示 102