static关键字在 ActionScript 2.0 里面也比较重要。如果一个属性是静态的,那么我们可以直接调用……
static(静态)关键字在 ActionScript 2.0 里面也比较重要。如果一个属性是静态的,那么我们可以直接调用,而不用去使用类的Instance 来调用。大部分属性都是要通过类的 Instance 来操作的,那就意味着,它们不是静态的。
例子:
// 创建 myClass 的 Instance myInstance
myInstance = new myClass();
// 调用其中一个属性
trace(myInstance.property1);
如果这个属性 property1 是静态的,那么我们就可以直接这样调用:
// 直接通过主类调用
trace(myClass.property1);
在 Flash 里面,拥有最多静态属性的类可能就是 Date 了,它所有的属性都是通过直接调用 Date 类获得的。我们可以直接这样:Date.getUTCMinutes(),而不用创建一个新的 Instance ,再通过这个 Instance 去获得需要的属性。可以这样说,静态的属性或者方法只会在主类里面创建一次,而不需要在每一个类成员里面都复制一个。
我们可以自己创建静态属性或者方法。下面是一个例子:
class Geometry {
static function getDistance(mc1, mc2) {
var distance:Number = Math.sqrt((mc1._x - mc2._x)*(mc1._x - mc2._x)+(mc1._y
- mc2._y)*(mc1._y - mc2._y));
return distance;
}
}
静态函数 getDistance() 会返回两个 MovieClip 之间的距离。我们可以在其它文件里面这样调用它:
distance_between_2_dots = Geometry.getDistance(dot1, dot2);
如果您去掉“static”,然后还想像上面的方法一样调用 getDistance(),那么您将得到如下的 AS 2.0 出错信息:
The property being referenced does not have the static attribute