Код:
function loadImages(sources, callback){
var images = {};
var loadedImages = 0;
var numImages = 0;
for (var src in sources) {
numImages++;
}
for (var src in sources) {
images[src] = new Image();
images[src].onload = function(){
if (++loadedImages >= numImages) {
callback(images);
}
};
images[src].src = sources[src];
}
}
window.onload = function(images){
var canvas = document.getElementById("myCanvas");
var context = canvas.getContext("2d");
var sources = {
darthVader: "darth-vader.jpg",
yoda: "yoda.jpg"
};
loadImages(sources, function(images){
context.drawImage(images.darthVader, 100, 30, 200, 137);
context.drawImage(images.yoda, 350, 55, 93, 104);
});
};
Путаница
function loadImages(sources, callback){
3: в эту функцию передаются два параметра, один из которых сам по себе является функцией: callback
var images = {};
4: наконец, для изображений установлено значение ... nul (?)
var loadedImages = 0;
var numImages = 0;
// get num of sources
for (var src in sources) {
numImages++;
}
for (var src in sources) {
images[src] = new Image();
images[src].onload = function(){
if (++loadedImages >= numImages) {
callback(images);
5: в этот момент мой мозг смущен ....
}
};
images[src].src = sources[src];
}
}
window.onload = function(images){
Как я понимаю,
1: параметр "images" пуст.
var canvas = document.getElementById("myCanvas");
var context = canvas.getContext("2d");
var sources = {
darthVader: "darth-vader.jpg",
yoda: "yoda.jpg"
};
loadImages(sources, function(images){
2: теперь его передают в качестве параметра этим встроенным функциям - все еще без указанияв любом месте ... теперь он якобы вызывает метод loadImages, который определен выше ...
context.drawImage(images.darthVader, 100, 30, 200, 137);
где он получает контекст для darthvader?я вижу только "источники", у которых darthVader выше
context.drawImage(images.yoda, 350, 55, 93, 104);
});
};
source: http://www.html5canvastutorials.com/tutorials/html5-canvas-image-loader/
EDIT: QUESTIONS ::
с шага 4: до 5: (особенново втором цикле for) создается новый массив (images [src]), который передается в функцию callback (), которая определяется как встроенная непосредственно перед шагом 2 :.Где он на самом деле получает изображения, которые были в источнике?