我有一个敌人类(它包含所有作为敌人的影片剪辑),一个关卡类(列出数组中关卡的布局)和我的主文档类(在磁贴中生成关卡的布局)。我的目标是在每个关卡中拥有不同的敌人。
敌方职业:
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);
}
}
也许我以错误的方式进行整个设置,但我觉得有一种更简单的方法来完成我正在做的事情。所以我有2个问题。首先,如何添加敌方阵中的两个敌人?其次,敌人现在出现在图块下方,可能是因为主类是生成图块的职业。有什么方法可以以某种方式将敌人添加到主类中吗?
(1)您可以通过指定数组中的索引将数组中的任何敌人添加到显示列表中:
addChild(enemyArray[0]);
addChild(enemyArray[1]);
(2) 向舞台的显示列表添加内容的顺序决定了顶部的内容。
我的建议是,将地砖添加到关卡类中,然后添加敌人。
同样对于关卡,如果你有敌人数组而不是在敌人职业中,可能会更好。 enemyArray 包含一个敌人的集合,所以你可以在你的关卡中拥有它,因为它代表该关卡上的敌人。
Enemy类应仅具有特定于 Enemy 的属性和方法。就像移动或射击是方法,生命值或力量可能是敌人的属性