【问题标题】:How to pass object's property name to drawImage?如何将对象的属性名称传递给drawImage?
【发布时间】:2016-07-14 08:43:28
【问题描述】:

我需要传递这个名为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"
 }

drawImage 函数。

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);
}
});


如果我只放属性名而不涉及循环,它就可以工作:

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

但是,如果我尝试通过循环执行此操作并将所有属性名称放入 key 变量中,则不会。当我将它传递给context.drawImage(images.key, 0, 0, 921, 680); 时,它不起作用。

【问题讨论】:

  • 您的要求不清楚,能否请您详细说明一下
  • @user2181397 我编辑了它。希望现在很清楚
  • @AmiramKorach 但如果我只是在其中放置属性名称而不涉及循环,它就可以工作:context.drawImage(images.top_layer, 0, 0, 921, 57);

标签: javascript canvas drawimage


【解决方案1】:

使用

  var temp = images[key];

而不是

   var temp = images.key;

【讨论】:

  • 感谢您的回复。但它不起作用。我编辑了帖子,现在应该更清楚了。为什么我不能直接写成context.drawImage(images.key, 0, 0, 921, 680);
  • images.key 会在你的 images 对象中寻找“key”,但 images[key] 实际上会寻找你想要的 images.keyValue
猜你喜欢
  • 2021-11-30
  • 2019-06-01
  • 1970-01-01
  • 2011-09-20
  • 1970-01-01
  • 2011-04-02
  • 1970-01-01
  • 2014-08-23
  • 1970-01-01
相关资源
最近更新 更多