AS3敌人在前一个之上产生

时间:2013-12-14 17:56:15

标签: arrays actionscript-3 for-loop

所以这是我第一次来这里。看看这个问题是否得到了解答,但是它有,但对我来说还不够清楚。对不起潜在的双重帖子。

我想在屏幕上找到敌人。它们在随机位置产卵,如下图所示,但是......它们会在它们之前产生的敌人身上产生。我读到的答案包括把它放到一个数组中,但是我做了,对吧?我有点困惑,并且在这方面工作的时间太长了,也可能就是这样。

提前致谢!

function enemySpawn(e:TimerEvent) {
var enemyAxis:int = Math.round(Math.random()); // determines the x or y axis (0 or 1)
var enemyPos1:int = Math.round(Math.random()) * 600; // spawning it outside the stage (0 or 600)
var enemyPos2:int = Math.floor(Math.random() * 600); // spawning it at random around the stage border (0 through 600)

// spawning the enemy at correct axis
addChild(_enemy);
if(enemyAxis == 0){
    // we declare 0 = x-axis, then either position 0 or max-width, plus the enemy's width.
    _enemy.x = enemyPos1;
    _enemy.y = enemyPos2;
} else
if(enemyAxis == 1){
    // we declare 1 = y-axis, then either position 0 or max-height, plus the enemy's height.
    _enemy.y = enemyPos1;
    _enemy.x = enemyPos2;
}

enemyContainer.push(_enemy);

1 个答案:

答案 0 :(得分:0)

不确定我是否理解正确,但调用addChild不足以创建MovieClip的新实例。它只是将它添加到目标容器中(如果MC已经在该容器中,则不执行任何操作)。

如果你想同时产生几个敌人,你应该在调用new之前使用addChild关键字创建你的MC的新实例:

var enemy:MovieClip = new Enemy();
addChild(enemy);
// _enemies is an array/vector that contains all created enemies;
// it is not necessary, but helps to access the enemy later, when
// the call of enemySpawn() function inside which the enemy was created
// has ended
_enemies.push(enemy);

为了能够这样做,您需要为库中的Enemy符号启用AS3链接。请参阅this answer