我正在制作一个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
答案 0 :(得分:0)
当您使用createEmptyMovieClip
时,您需要确保为每个新剪辑指定一个唯一名称。自从我使用ActionScript 2.0以来已经有一段时间了,但我认为一个常见的模式是将深度附加到名称上,如下所示:
var depth = _root.getNextHighestDepth();
self = _root.createEmptyMovieClip('self_' + depth, depth);