【问题标题】:Adding enemies from array从数组中添加敌人
【发布时间】:2013-09-12 19:17:18
【问题描述】:

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

敌人等级:

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个问题。首先,如何从enemyArray 中添加两个敌人?其次,敌人现在出现在图块下方,可能是因为主类是生成图块的类。有什么办法可以让敌人被添加到 Main 类中?

【问题讨论】:

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


    【解决方案1】:

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

    addChild(enemyArray[0]);
    
    addChild(enemyArray[1]);
    

    (2) 向舞台显示列表添加内容的顺序决定了最上面的内容。

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

    对于关卡来说,如果你有敌人阵列可能会更好,而不是在 Enemy 类中。 enemyArray 包含敌人的集合,因此您可以在您的关卡中拥有它,因为它代表该关卡上的敌人。

    Enemy 类应该只具有特定于 Enemy 的属性和方法。就像移动或射击可能是方法,而生命值或力量可能是敌人的属性

    【讨论】:

    • 谢谢!如果我想添加 2 个相同的索引,比如两次enemyArray[0],该怎么办?我该怎么做呢?
    • 那是另一个问题。最好每个问题有 1 个问题,因为它使网站更有用。答案并不意味着隐藏在 cmets 中。我会说你的新问题表明你需要退后一步,了解数组和 DisplayObjects/DisplayList,所以你不要猜测。
    猜你喜欢
    • 1970-01-01
    • 2022-11-19
    • 2019-05-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-11
    • 2017-10-04
    • 1970-01-01
    相关资源
    最近更新 更多