Javascript中关联数组的范围

时间:2015-03-07 16:17:27

标签: javascript arrays

我正在制作动画头像。

我首先从一些XML中提取化身的框架细节。

我需要单独触发帧,以便我可以为化身设置动画,但帧存储的数组最终在我需要的地方为空。

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

findImages();

function loadImages(sources, callback) {
    var images = {};
    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);
            }
        };
        images[src].src = sources[src];
    }
}

function findImages() {
    var sources = {};

    $.ajax({
        type: 'GET',
        url: 'image_loader.php?avatar=jess',
        dataType: 'xml',
        success: function(xml) {
            $(xml).find('frame').each(function() {
                var name = $(this).find("name").text().toString();
                var url = $(this).find("url").text().toString();
                sources[name] = url;
            });

            loadImages(sources, function(images) {
                context.drawImage(images.v1, 0, 0);
            });
        }
    });
}

console.log(images);
context.drawImage(images.v5, 0, 0);

这是我的代码。如果你看一下'findImages'功能你会看到它调用' loadImages'它将图像名称(密钥)和网址加载到'图像中。阵列。

加载后,此部分会正确显示头像的起始图像:

context.drawImage(images.v1, 0, 0);

一切都很好。但是当我尝试访问“图像”时这样的函数之外的数组(如上面的代码所示):

console.log(images);
context.drawImage(images.v5, 0, 0);

控制台报告一个空对象,我收到错误:

未捕获的TypeError:无法执行' drawImage' on' CanvasRenderingContext2D':提供的值不是'(HTMLImageElement或HTMLVideoElement或HTMLCanvasElement或ImageBitmap)'

我认为这可能是范围问题?

0 个答案:

没有答案