0

我正在用 Flash 制作游戏,但我遇到了一些我无法解决的问题:S

假设敌人从左到右生成,假设我们有 3 种类型的敌人。

现在我只写了一个 for 循环来生成每种类型的敌人数量并将它们放置在垂直尺度上的随机位置 (Math.random()*stage.stageWidth)

现在,如果您重新开始游戏,有时会发生相互交叉的敌人加上波浪永远不会相同的情况。

我正在考虑制作像 EnemyContainer 这样的 MovieClip 并手动将敌人放置在编队或图案中然后控制它们的方法。

问题是我的 Enemy 类构造函数使用了对舞台和速度等的引用等参数,如果我只是将我的对象放在影片剪辑中,我会得到错误,因为那时我无法定义舞台。

有谁知道如何用图案制作敌人的波浪?

这是 Enemy 的构造函数:

public function Enemy(stageRef:Stage, firerate:Number=1000, speed:Number=1) {

如您所见,它需要 3 个 args,但是当在 EnemyContainer 影片剪辑中放置敌人的影片剪辑时,我有一个错误,因为您无法定义舞台。

此外,我不确定制作一个带有敌人图案的巨型电影剪辑的想法是否是正确的方法。

另一件事是我的不同敌人类型在不同帧上的一个 MovieClip 敌人中,如果我将它们放在一个影片剪辑中,我也无法控制它

4

1 回答 1

0

没关系,我认为我找到了正确的方法。

问题是我将敌人的对象添加到 EnemyContainer 中。

现在我只需添加一些虚拟 MovieClip 并使用 for 循环遍历 EnemyContainer 的所有子项,并使用子项的位置创建 Enemy。

像这样:

public function createEnemyFromContainer():void {
        enemyContainer = new EnemyContainer();
        //stage.addChild(enemyContainer);
        for (var i=0; i<enemyContainer.numChildren; i++) {
            var _tempEnemy_mc:Enemy = new Enemy(stage,1000,0.2+Math.random()*0.3);;

            stage.addChild(_tempEnemy_mc);

            _tempEnemy_mc.x = enemyContainer.getChildAt(i).x;
            _tempEnemy_mc.y = enemyContainer.getChildAt(i).y;
            _tempEnemy_mc.gotoAndStop("tank");
            _tempEnemy_mc.enemyCanon.gotoAndStop("tank");

            enemyObjectsArray.push(_tempEnemy_mc);
        }
    }
于 2012-11-24T19:05:56.790 回答