How to pass object's property name to drawImage?

心已入冬 提交于 2019-12-11 04:13:51

问题


I need to pass property names of this object called source

 Object {
   one: "img/20160602_112823_001.jpg",
   two: "img/UHEGP 17.1.jpg",
   three: "img/UHEGP 17.3.jpg",
   badge: "img/badge-gold-big-no-shadow-tilted.png",
   top_layer: "img/watermark_bronze_GOLD_Final-70-opacity.png"
 }

to drawImage function.

function loadImages(source, callback) {
var images = {};
var loadedImages = 0;
var numImages = 0;
// get num of sources
for (var src in source) {
    numImages++;
}
for (var src in source) {
    images[src] = new Image();
    images[src].onload = function () {
        if (++loadedImages >= numImages) {
            callback(images);
        }
    };
    images[src].src = source[src];
}
}

var canvas = document.getElementById('myCanvas');
var context = canvas.getContext('2d');

loadImages(source, function (images) {
for (var key in source) {

    context.drawImage(images.key, 0, 0, 921, 680);
    context.drawImage(images.top_layer, 0, 0, 921, 57);
    context.drawImage(images.badge, 700, -20, 175, 175);
}
});


It works if I just put there property name without involving loop:

context.drawImage(images.top_layer, 0, 0, 921, 57);

But it doesn't if I try to do it through loop and put all property names inside key variable. When I pass it to context.drawImage(images.key, 0, 0, 921, 680); it doesn't work.


回答1:


Use

  var temp = images[key];

instead of

   var temp = images.key;


来源:https://stackoverflow.com/questions/38369463/how-to-pass-objects-property-name-to-drawimage

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!