AS3:数组中的单独实例?

时间:2013-05-21 02:23:36

标签: arrays actionscript-3 flash actionscript instances

我正在as3中制作一个侧滚动游戏,其中玩家产生的单位会自动走向屏幕另一侧的出口,但有塔停止它们。我想塔楼分开拍摄,有什么办法吗? 这是我的代码,一旦if语句满足所有塔同时开火。

    private function tower1Fire():void 
    {
            for (var j:int = creep1Array.length - 1; j >= 0; j--)
            {
                for each (var towerOne:mcTower1 in tower1Array)
                {
                    if (creep1Array[j].x - towerOne.x <= 100 && creep1Array[j].y > towerOne.y)
                    {
                        var newTower1Bullet:mcLaser1 = new mcLaser1;
                        newTower1Bullet.x = towerOne.x;
                        newTower1Bullet.y = towerOne.y;
                        tower1BulletArray.push(newTower1Bullet);
                        stage.addChild(newTower1Bullet);
                    }
                }
            }
    }

我在屏幕上有3个塔,使用此代码添加:

             var tower1New1:MovieClip = new mcTower1;
        tower1New1.x = 313;
        tower1New1.y = 340;
        tower1Array.push(tower1New1);
        MovieClip(root).addChild(tower1New1);

我没有收到任何错误。任何回复将不胜感激,谢谢!

1 个答案:

答案 0 :(得分:1)

据我所知,你所有的塔都将在一个'帧渲染'中“射击”,这就是为什么它们看起来都是一次性射击。 (因为你的整个循环将在一次绘制操作中执行)

如果我是你,我会听取ENTER_FRAME事件,并保持帧的数量....我只会发射一个塔,一次非常10-20帧。所以......

private ENTER_FRAME(event:Event):void
{

    if(frameCount >= 20)
    {
        // TODO: fire logic goes here

        // reset the frameCount to zero
        frameCount = 0;

        // you need to keep a running index of your towers, 
        // so the next time your code executes, it will fire the next tower
        towerIndex++
    }
    frameCount++;
}

所以,如果我们这样做,你就不会有for循环。