簡體   English   中英

我的for循環不會顯示我的對象,但是不會顯示任何錯誤

[英]My for loop won't display my object, but no errors show up

由於某些原因,我的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;
        }
    }
}

謝謝您的幫助!

好的,我很長時間沒有使用AS3,但是...如果myEnemies長度為0,為什么還要創建新的敵人? 另外,您創建了兩個不同的ENTER_FRAME函數,而無需這樣做。 僅創建一個函數並調用它進行示例更新:

private function update(e:event)
{

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

您不應該在ENTER_FRAME函數內使用for循環來創建新的精靈,因為此函數在一秒鍾內運行30次或更多次。 在“ init”或“ create”函數中創建for循環,除非要更新每個框架上的代碼。

加10個敵人:

for (var i = 0; i < 10; i++) {
        Enemy = new enemy();
        Enemy.x = (Math.random() * this.width);
        Enemy.y = (Math.random() * this.height);
        this.addChild(Enemy);
        // add it to array
        myEnemies.push(Enemy);
    }

您不能使用myEnemies創建新的敵人精靈,因為它是空的,因此您創建了0個敵人。 如果要創建10個敵人,請使用此代碼,或者簡單地將數字10更改為所需的任何數字。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM