0

我正在使用 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),无论我翻过哪个。

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

非常感谢!

4

1 回答 1

2

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

private var Type:String;
于 2013-10-29T19:26:43.867 回答