从阵列添加敌人

时间:2013-09-12 19:17:19

标签: actionscript-3 flash-cs5 tiles-game

我有一个Enemy Class(它包含所有敌人的影片剪辑),一个Level类(列出数组中级别的布局)和我的Main文档类(它生成了tile中关卡的布局) )。我的目标是为每个级别拥有不同的敌人。

敌人类:

private var enemy1:Enemy1 = new Enemy1();
private var enemy2:Enemy2 = new Enemy2();

public var enemyArray:Array = new Array(enemy1, enemy2);

等级:

var enemies:Enemy = new Enemy();
levelStageNumber = 1;
if (levelStageNumber == 1) { floor1F(); Main.floor = floor1; }
private function floor1F():void
        {
            floor1 = new Array();
            floor1[0] = [1,1,1,1,1,1,1];
            floor1[1] = [1,1,1,1,1,1,1];
            floor1[2] = [1,1,1,2,1,1,1];
            floor1[3] = [2,1,1,2,1,1,2];
            floor1[4] = [1,1,1,2,1,1,1];
            floor1[5] = [1,1,1,1,1,1,1];
            floor1[6] = [1,1,1,1,1,1,1];

            addChild(enemy2.enemyArray[0]);

        }

主类:

public static var floor:Array = []; //for the main class to talk to the level class
private var level:Level = new Level();

addChild(level);

    for (var Y:int=0; Y<floor.length; Y++)
            {
                for (var X:int=0; X<floor[Y].length; X++)
                {
                    var cell:MovieClip = new Tile(X,Y);
                    cell.gotoAndStop(floor[Y][X]);
                    cell.x = ((X-Y)*level.tileh)+365;
                    cell.y = ((X+Y)*level.tileh/2)+70;
                    addChild(cell);
                }
            }

也许我会以错误的方式进行整个设置,但我觉得有一种更简单的方法来完成我正在做的事情。所以我有两个问题。首先,我如何从敌人阵列中添加两个敌人?其次,敌人现在出现在瓷砖下面,可能是因为Main类是生成瓷砖的类。有什么方法我可以以某种方式让敌人被添加到主类?

1 个答案:

答案 0 :(得分:1)

(1)您可以通过在数组中指定它的索引,将数组中的任何敌人添加到显示列表中:

addChild(enemyArray[0]);

addChild(enemyArray[1]);

(2)您在舞台的显示列表中添加内容的顺序决定了最重要的内容。

我的建议是将地砖添加到Level类,然后添加敌人。

同样对于关卡,如果你有敌人阵列而不是敌人类,那可能会更好。 enemyArray包含一系列敌人,所以你可以在你的关卡中拥有它,因为它代表了那个级别的敌人。

敌人类只应具有特定于敌人的属性和方法。像移动或射击一样,方法和hitPoints或权力可能是敌人的属性