有setInterval麻烦

时间:2013-09-30 22:59:27

标签: flash actionscript

我正在制作一个flash / actionscript射击游戏,这是我为子弹创建的一个类。

class Class.Bullet {
  public static var self:MovieClip;
  private static var interval;

  public function Bullet(X, Y) {
    self = _root.createEmptyMovieClip('self', _root.getNextHighestDepth());
    self._x = X;
    self._y = Y;
    self.beginFill(0xFFFFFF);
    self.moveTo(-2, 0);
    self.lineTo(2, 0);
    self.lineTo(2, 10);
    self.lineTo(-2, 10);
    self.lineTo(-2, 0);
    self.endFill();

    interval = setInterval(move, 1);
  }

  private function move() {
    self._x++;
  }
}

它工作正常,除了某些原因,除了我的理解之外,每次创建新的子弹时,除了新的setInterval之外,“setInterval”会被传递到下一个项目符号。

换句话说,当我射出第二颗子弹时,第一颗子弹停止移动,第二颗子弹以两倍的速度移动。

欢呼声!!

P.S:我正在使用as2

1 个答案:

答案 0 :(得分:0)

当您使用createEmptyMovieClip时,您需要确保为每个新剪辑指定一个唯一名称。自从我使用ActionScript 2.0以来已经有一段时间了,但我认为一个常见的模式是将深度附加到名称上,如下所示:

 var depth = _root.getNextHighestDepth();
 self = _root.createEmptyMovieClip('self_' + depth, depth);