drawimage在画布上多次

时间:2014-09-14 06:44:36

标签: javascript

当敌人到达x的位置900时,我怎么会在敌人身上产卵呢?

它必须像

if(enemy.x<=900){    
    //spawn enemies
}

这里有一个jsfiddle来向你展示我的意思,向左移动的块我想要它们的倍数 http://jsfiddle.net/h8u1n3fj/ 我需要当前的敌人留在棋盘上,同时产生它们,并且只是让它在每次击中900后有多组敌人留在棋盘上。

var requestAnimFrame = window.requestAnimationFrame || window.mozRequestAnimationFrame ||   window.webkitRequestAnimationFrame || window.msRequestAnimationFrame;

window.requestAnimationFrame = requestAnimFrame
var place = [74,111,148,185,222,259,296,333,370];
var rand = place[Math.floor(Math.random()*place.length)];
var rand2 = place[Math.floor(Math.random()*place.length)];
var rand3 = place[Math.floor(Math.random()*place.length)];
var rand4 = place[Math.floor(Math.random()*place.length)];
var rand5 = place[Math.floor(Math.random()*place.length)];
var rand6 = place[Math.floor(Math.random()*place.length)];
var rand7 = place[Math.floor(Math.random()*place.length)];
var rand8 = place[Math.floor(Math.random()*place.length)];
var rand9 = place[Math.floor(Math.random()*place.length)];

console.log(rand);

var move = setInterval(function () {
    enemy.x -= 45;
}, 500);
//drawing the character

function drawChar(x,y){
    enemy.y = rand;
    enemy.y2 = rand2;
    enemy.y3 = rand3;
    enemy.y4 = rand4;
    enemy.y5 = rand5;
    enemy.y6 = rand6;
    enemy.y7 = rand7;
    enemy.y8 = rand8;
    enemy.y9 = rand9;

    context.drawImage(tile3,enemy.x,enemy.y,tileWidth,tileHeight);
    context.drawImage(tile3,enemy.x,enemy.y2,tileWidth,tileHeight);
    context.drawImage(tile3,enemy.x,enemy.y3,tileWidth,tileHeight);
    context.drawImage(tile3,enemy.x,enemy.y4,tileWidth,tileHeight);
    context.drawImage(tile3,enemy.x,enemy.y5,tileWidth,tileHeight);
    context.drawImage(tile3,enemy.x,enemy.y6,tileWidth,tileHeight);
    context.drawImage(tile3,enemy.x,enemy.y7,tileWidth,tileHeight);
    context.drawImage(tile3,enemy.x,enemy.y8,tileWidth,tileHeight);
    context.drawImage(tile3,enemy.x,enemy.y9,tileWidth,tileHeight);

    requestAnimFrame(drawChar);
    if(enemy.x<=0){
        enemy.x=990;
        rand = place[Math.floor(Math.random()*place.length)];
    }

    else {

        return true;
    }

}

此外,如果您对如何使代码更清洁有任何建议,请随意,但我主要希望每次x等于900时能够产生这些敌人并保持当前敌人在棋盘上。

1 个答案:

答案 0 :(得分:0)

目前,您的敌人列表(rand to rand9)正在被使用,直到它到达enemy.x等于零的位置。现在,不是使用一个敌人列表,如果我们可以一个接一个地生成敌人列表而不覆盖变量,然后一旦它们达到零就丢弃敌人列表,那不是很好吗? 您需要使用对象编程来解决您的问题。可以在此处找到详细记录的教程:http://eloquentjavascript.net/1st_edition/chapter8.html。在学习了一点面向对象编程(OOP)之后,您将能够为敌人列表制作一个“蓝图”,允许您创建它们并定位它们,同时保持它们彼此独立。