0

ctx他のキャンバス プロパティと一緒に事前定義されています。大量のコードでページを攻撃したくなかったのです。

リテラル オブジェクトの配列を作成していますが、それらには 1 つのメソッドがあります。メソッドを呼び出そうとすると、次のように未定義であると表示されます。

var enemiesArray = [];

function createEnemy(ene) {
    for (e = 0; e <= ene; e++) {
        var t = Math.floor(Math.random() * 291)
        var p = Math.floor(Math.random() * 101)
        var enemies = {
            x: t,
            y: p,
            hp: 20,
            dir: 0,
            damageImage: function () {
                return "bomber4.png";
            }
        }
        enemiesArray.push(enemies);
    }
}
//an interval is set to call the following function:
function drawEnemey() {
    for (zdp in enemiesArray) {
        img = new Image();
        img.src = "Images/" + enemiesArray[zdp].damageImage(); //this is where I get the    error.
        img.style.width = "20px";
        ctx.drawImage(img, enemiesArray[zdp].x, enemiesArray[zdp].y);
        //move from side to side
        if (enemiesArray[zdp].dir == 0) {
            //move left
            enemiesArray[zdp].x -= 1;
            if (enemiesArray[zdp].x <= 0) enemiesArray[zdp].dir = 1;
        } else {
            //move right
            enemiesArray[zdp].x += 1;
            if (enemiesArray[zdp].x >= 290) enemiesArray[zdp].dir = 0;
        }
        //check if they are hit
    }
}

私が理解していないのは、コードをそのまま実行すると、定義されenemiesArray[zdp].xていますが、そうではありません。enemiesArray[zdp].direnemiesArray[zdp].damageImage()

4

0 に答える 0