jQuery为动画预加载图像

前端之家收集整理的这篇文章主要介绍了jQuery为动画预加载图像前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我知道有大量的jQuery预加载线程,我已经阅读了大部分内容但仍然无法找到我的问题的解决方案.

我有一个“停止动画”动画,它是通过jQuery使用队列和基于图像的顺序命名构建的.我不想在加载所需的所有图像之前运行此动画. Spriting目前不是一种选择,因为不同的产品类型有不同的动画,并且所有图像都已由客户生成.

我目前的预装代码如下:

function preloadImages($img,$frames){
    var $imgsrc = $img.attr("src");
    var $getext = $imgsrc.split('.');
    var $ext = $getext[1];
    var $exploded = $getext[0].split('_');
    var $newsrc = "";
    for (var i=1; i <= $frames; i++){
        for (var j=0; j < $exploded.length-1; j++){
            $newsrc = $newsrc + $exploded[j] + "_";
        }
        $newsrc = $newsrc + i + "." + $ext;
        var image_preload = new Image();
        image_preload.src = $newsrc;
    }
}

其中frames是序列中的总图像数(此阶段为6或12),图像的命名约定如下:

Brand_Product_Category_ProductID_SequenceNo.jpg.

我正在尝试做的是没有加载持有起始图像的div,直到所有这些图像都已使用下面的文档准备好的预览片进行预加载,但这似乎没有正常工作,即持有者显示在预先加载所有必需的图像之前,动画不能顺利运行.

$(".holder").hide();
preloadImages($(".holder img"),6);
$(".holder").fadeIn("slow");

我想我需要某种回调,但我不确定如何实现它.

解决方法

问题是这样的:

将值赋给Image对象的src字段时,它只会这样:更改src属性.浏览器仍需要从src属性指向的任何位置加载图像.

您可以为Image的’load’事件定义处理程序…因此您将需要沿着这些行使用某些东西.

一种方法是定义需要加载的图像列表.每次加载图像时,在数组中设置一个标志.定期检查数组,一旦设置了所有标志,表明所有图像都已加载,您可以淡入div.

猜你在找的jQuery相关文章