gpt4 book ai didi

javascript - 在 jquery/canvas 中预加载图像 "Uncaught TypeError: Type error"

转载 作者:行者123 更新时间:2023-11-28 20:28:08 25 4
gpt4 key购买 nike

我想将图像目录预先加载到我的 Canvas 中,以便在需要时可以显示它们。

I found this question on stackoverflow接受的答案非常有帮助。他们的函数迭代图像位置数组,然后(我推测)将它们预加载到 Canvas 上。

使用此功能预加载它们后,我在实际显示它们时遇到困难。我很清楚单图像加载方法-

img = new Image();
img.src = imgLocation;
img.onload = function() {
context.drawImage(img, 0, 0);
}

但由于它们已经加载,我假设我不需要使用img.onload或除上下文之外的任何上述代码。 drawImage 实际显示图像。

当我尝试从(我只能假设是包含所有图像的输出数组)加载图像时,我收到类型错误。当我在任何索引处检查数组内的内容(使用 console.log() )时,它会显示 [object, Object]

我的代码如下所示:

var framesArr = new Array();
var framesAmnt = 300; // we would normally get this number from the PHP side of things

function ldBtn(){

//load all frames locations into framesArr
var i=0;
for (i=0;i<=(framesAmnt-1);i++){
framesArr[i] = "frames/Frame" + i + ".png";
}

//preload them
preloadImages(framesArr, preloadDone);
}

var deferreds = [];
var deferred;

function preloadImages (paths, callback) {

$.each(paths, function (i, src) {
deferred = $.Deferred(),
img = new Image();

deferreds.push(deferred);
img.onload = deferred.resolve;
img.src = src;
});

$.when.apply($, deferreds).then(callback);
}

function preloadDone(){
//any old index number will do. *Shruggs*
context.drawImage(deferreds[2], 0, 0); //this will cause a type error.
}

如何将 preloadImages 函数加载的图像显示到 Canvas 上?

我想我不完全理解 img = new Image(); img.src = imgLocation; img.onload = function( ) 发生了。 javascript/jquery 将图像存储为什么?如果答案是“一个对象”那么为什么它不加载此数组中的对象?

预先感谢您提供的任何建议。

最佳答案

首先,您需要将实际的图像元素传递给 drawImage 方法。现在您正在传递一个延迟传入。

接下来,Chrome 和原生元素构造函数 (new Image()) 存在错误。

因此,只需使用 document.createElement("img") 即可完成完全相同的操作 - 没有错误。

查看相关错误:

我在这里创建了一个简化的示例:http://jsfiddle.net/YVDpD/

关于javascript - 在 jquery/canvas 中预加载图像 "Uncaught TypeError: Type error",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16951773/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com