2013-09-30 111 views
1

我做了一个flash/actionscript射击游戏,这是我为子弹创建的一个类。有setInterval麻烦

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:当您使用createEmptyMovieClip你需要确保每个新片段被赋予一个唯一的名称,我使用的AS2

回答

0

。自从我使用ActionScript 2.0以来已经有一段时间了,但我认为一种常见模式是将深度附加到名称上,如下所示:

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