小AS2 OOP问题

时间:2013-10-29 13:27:31

标签: oop actionscript actionscript-2

我正在使用Actionscript 2(尚未准备升级,虽然它对问题不以为然)但我在使用OOP和类时遇到了麻烦。

我有一个“工具”类,写得像这样:

class com.Tool {
  public var self:MovieClip;
  private static var Type:String;

  function Tool(T:String, X:Number, Y:Number) {
    Type = T;

    self = _root.createEmptyMovieClip("obj"+_root.getNextHighestDepth(), _root.getNextHighestDepth());
    self._x = X;
    self._y = Y;
    self.width = 36;
    self.height = 36;

    self.onRollOver =  function() {
        trace(Type);
    }
  } 
}

我在主脚本中创建了3个,如下所示:

var toolPan:Tool = new Tool("pan", 0, 0);
var toolSquare:Tool = new Tool("square", 0, 38);
var toolLine:Tool = new Tool("line", 0, 76);

除了onRollOver外,一切都很棒。它应该输出唯一的“Type”字符串,但它总是输出“line”(最后创建的Type Tool),而不管我翻过哪一个。

毋庸置疑,我仍然是这一切的初学者。但似乎它们都共享相同的变量:/如何使这些变量对每个创建的对象都是唯一的?

非常感谢!

1 个答案:

答案 0 :(得分:2)

这是因为它的类型为static,因此该值由该类的所有实例共享。删除它,它应该工作。

private var Type:String;