我有一个JS函数来预加载一组图像,然后将这些图像存储在一个数组中,并在触发时最终绘制到画布上。我在iPad和较旧的iPhone上存在一些内存大小问题。因此,一旦加载了一定数量的图像,该应用就会变成一个洞穴。从而让我认为问题在于预装载器。
如果有人能够对此有所了解或指出我的任何方向,我会很感激。
canvas.preload = function(images){
var
d = $.Deferred(),
// Empty Array
a = [];
// For each image in batch
_.each(images, function( val, i) {
var img = new Image();
img.onload = function(){
// Push Image and index into array
a.push({image:this, index:i});
// Sort this array by the index
var sortedArray = _.sortBy(a, 'index');
// When total batch is loaded return it
if (a.length === images.length) {
// Pluck just image from array
d.resolve(_.pluck(sortedArray, 'image'));
}
}
img.src = images[i];
});
return d;
} // preload();
答案 0 :(得分:0)
此处的问题是由移动设备设置的内存限制。
您的图片可能太大。而对于大的,它可以是维度明智或咬合。问题是他们不会以任何方式提醒您:他们根本就不会下载。
在这些情况下,最佳方法始终根据设备提供不同的资产。 因此,例如,如果客户端正在使用移动设备,请尝试下载较小版本的图像。