2016-07-14 14 views
1

Ich brauche Eigenschaftsnamen dieses Objekt zu übergeben genannt sourceWie übergeben Sie den Objekteigenschaftsnamen an drawImage?

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" 
} 

zu drawImage Funktion.

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


Es funktioniert, wenn ich nur da Eigenschaftsnamen setzen, ohne Schleife beteiligt: ​​

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

Aber es funktioniert nicht, wenn ich versuche, es durch die Schleife zu tun und alle Eigenschaftsnamen setzen innerhalb key variabel. Wenn ich es an context.drawImage(images.key, 0, 0, 921, 680); übergebe, funktioniert es nicht.

+0

Ihre Anforderung ist nicht klar, können Sie bitte etwas – brk

+0

@ user2181397 erarbeiten ich bearbeitet wurde. Hoffe, jetzt ist es klar – hasan

+0

@AmiramKorach Aber es funktioniert, wenn ich nur dort Eigenschaftsname ohne Schleife einfügen: 'context.drawImage (images.top_layer, 0, 0, 921, 57);' – hasan

Antwort

1

Verwenden

var temp = images[key]; 

statt

var temp = images.key; 
+0

Vielen Dank für Ihre Antwort. Aber es funktioniert nicht. Ich habe Post bearbeitet, jetzt sollte es klarer sein. Warum kann ich es nicht einfach als 'context.drawImage (images.key, 0, 0, 921, 680) setzen;'? – hasan

+0

images.key würde in Ihrem Bilderobjekt nach 'key' suchen, aber images [key] würde eigentlich nach images.keyValue suchen, was genau Sie wollen –