我将如何简化它,使其具有相同的效果?

context.drawImage(imgs2[0],enemy.x+135,enemy.y,tileWidth,tileHeight);
context.drawImage(imgs2[0],enemy.x+135,enemy.y2,tileWidth,tileHeight);
context.drawImage(imgs2[0],enemy.x+135,enemy.y3,tileWidth,tileHeight);
context.drawImage(imgs2[0],enemy.x+135,enemy.y4,tileWidth,tileHeight);
context.drawImage(imgs2[0],enemy.x+135,enemy.y5,tileWidth,tileHeight);
context.drawImage(imgs2[0],enemy.x+135,enemy.y6,tileWidth,tileHeight);
context.drawImage(imgs2[0],enemy.x+135,enemy.y7,tileWidth,tileHeight);
context.drawImage(imgs2[0],enemy.x+135,enemy.y8,tileWidth,tileHeight);
context.drawImage(imgs2[0],enemy.x+135,enemy.y9,tileWidth,tileHeight);


我将“ imgs2”这样保存在数组中

function images2(callback){
    for(var i = 0; i<enemy2.length; i++){
        var tile4 = new Image();
        imgs2.push(tile4);

        tile4.onload = function(){
            imagesdraw=true;
            if (imagesdraw == true) {
                callback();
            }
        }
        tile4.src = enemy2[i];
    }
}


那么我将如何简化drawImage,使其看起来不那么引人注目,以至于只有一行可以与不同y一起用于多个图像?

最佳答案

利用能够通过obj.["propertyToGet"]访问属性的方法,可以简化以下操作:

ontext.drawImage(imgs2[0],enemy.x+135,enemy.y,tileWidth,tileHeight);
context.drawImage(imgs2[0],enemy.x+135,enemy.y2,tileWidth,tileHeight);
context.drawImage(imgs2[0],enemy.x+135,enemy.y3,tileWidth,tileHeight);
context.drawImage(imgs2[0],enemy.x+135,enemy.y4,tileWidth,tileHeight);
context.drawImage(imgs2[0],enemy.x+135,enemy.y5,tileWidth,tileHeight);
context.drawImage(imgs2[0],enemy.x+135,enemy.y6,tileWidth,tileHeight);
context.drawImage(imgs2[0],enemy.x+135,enemy.y7,tileWidth,tileHeight);
context.drawImage(imgs2[0],enemy.x+135,enemy.y8,tileWidth,tileHeight);
context.drawImage(imgs2[0],enemy.x+135,enemy.y9,tileWidth,tileHeight);


到这个:

for(var i = 1; i <= 9; i++){
  var propertyName = "";
  if(i > 1){
    propertyName = "y" + i;
  }
  context.drawImage(imgs2[0],enemy.x+135,enemy[propertyName], tileWidth, tileHeight);
}


看起来更干净了。

10-05 20:47
查看更多