我的for循环不会显示我的对象,但不会显示任何错误

时间:2018-06-08 18:48:57

标签: arrays actionscript-3 for-loop flash-cs3

由于某种原因,我的for循环不起作用,当我使用trace时,敌人不会产生并且输出中没有任何内容出现。但是,也没有错误,所以我想知道问题是什么。

这是我的代码:

var playerX = 0;
var playerY = 0;

var mapWidth = 5000;
var mapHeight = 5000;

//enemy
var myEnemies:Array = new Array();
var enemySprite:Sprite;
var Enemy:enemy;
var enemyCount:int = 0;

//event listeners

stage.addEventListener(Event.ENTER_FRAME, spawnEnemies);

//spawn enemies
function spawnEnemies(spawn:Event) {
    if (enemyCount < 20) {
        for (var i = 0; i < myEnemies.length; i++) {
            enemySprite = new Sprite();
            this.addChild(enemySprite);
            Enemy = new enemy();
            Enemy.x = (Math.random() * this.width);
            Enemy.y = (Math.random() * this.height);
            enemySprite.addChild(Enemy);

            enemyCount++;
            myEnemies[enemyCount] = enemySprite;
            trace(myEnemies.length);
        }
         stage.addEventListener(Event.ENTER_FRAME, moveEnemy);
    }
}

//move the enemies
function moveEnemy(enemyMovement:Event){
    for (var k = 0; k < myEnemies.length; k++) {
        trace("move enemy");
        if (myEnemies[k].y > playerY) {
            myEnemies[k].y -= 1;
            myEnemies[k].rotation = 0;
        }
        else if (myEnemies[k].x < playerX) {
           myEnemies[k].x += 1;
           myEnemies[k].rotation = 90;
        } 
        else if (myEnemies[k].y < playerY) {
           myEnemies[k].y += 1;
           myEnemies[k].rotation = 180;
        }
        else {
           myEnemies[k].x -= 1;
           myEnemies[k].rotation = 270;
        }
    }
}

感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

好的,我很长一段时间都没有使用AS3,但是......如果myEnemies长度为0,你为什么期望创建新的敌人? 此外,您创建了两个不同的ENTER_FRAME函数,没有必要这样做。只创建一个函数并调用它进行exmaple更新:

componentWillMount

你不应该在ENTER_FRAME函数中使用for循环创建新的精灵,因为这个函数在一秒钟内运行30次或更多次。 在内部创建循环&#34; init&#34;或&#34;创建&#34;函数,除非你想更新每一帧的代码。

添加10个敌人:

private function update(e:event)
{

}
stage.addEventListener(Event.ENTER_FRAME, update);

你不能使用myEnemies来创建新的Enemy sprite,因为它是空的,所以你创造了0个敌人。如果你想创建10个敌人,请使用此代码,或者简单地将数字10更改为您想要的任何数字。