1

我正在制作一个 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 之外,都会传递给下一个项目符号。

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

干杯!!

PS:我用的是as2

4

1 回答 1

0

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

 var depth = _root.getNextHighestDepth();
 self = _root.createEmptyMovieClip('self_' + depth, depth);
于 2013-09-30T23:34:34.387 回答