【笔记】canvas图片预加载及进度条的实现

/*star
 *loading模块
 *实现图片的预加载,并显示进度条
 *参数:图片数组对象,加载完成的回调函数
 */
function loadImages(sources,callback){
    var loadedImages = 0;
    var numImages = 0;
    ctx.font=‘14px bold‘;
    ctx.lineWidth=5;
    var clearWidth=canvas.width;
    var clearHeight=canvas.height;
    // get num of sources
    for (var src in sources) {
        numImages++;
    }
    for (var src in sources) {
        images[src] = new Image();
        //当一张图片加载完成时执行
        images[src].onload = function(){
            //重绘一个进度条
            ctx.clearRect(0,0,clearWidth,clearHeight);
            ctx.fillText(‘Loading:‘+loadedImages+‘/‘+numImages,200,280);
            ctx.save();
            ctx.strokeStyle=‘#555‘;
            ctx.beginPath();
            ctx.moveTo(200,300);
            ctx.lineTo(600,300);
            ctx.stroke();
            ctx.beginPath();
            ctx.restore();
            ctx.moveTo(200,300);
            ctx.lineTo(loadedImages/numImages*400+200,300);
            ctx.stroke();
            //当所有图片加载完成时,执行回调函数callback
            if (++loadedImages >= numImages) {
                callback();
            }
        };
        //把sources中的图片信息导入images数组
        images[src].src = sources[src];
    }
}
//定义预加载图片数组对象,执行loading模块
window.onload = function(){
    var sources = {
        PaperBoy1: "images/run/PaperBoy1.png",
        PaperBoy2: "images/run/PaperBoy2.png",
        PaperBoy3: "images/run/PaperBoy3.png",
        PaperBoy4: "images/run/PaperBoy4.png",
        PaperBoy5: "images/run/PaperBoy5.png",
        PaperBoy6: "images/run/PaperBoy6.png",
        PaperBoy7: "images/run/PaperBoy7.png",
        PaperBoy8: "images/run/PaperBoy8.png",
        PaperBoy9: "images/run/PaperBoy9.png",
        PaperBoy10: "images/run/PaperBoy10.png",
        PaperBoy11: "images/run/PaperBoy11.png",
        PaperBoy12: "images/run/PaperBoy12.png",
        PaperBoy13: "images/run/PaperBoy13.png",
        PaperBoy14: "images/run/PaperBoy14.png",
        PaperBoy15: "images/run/PaperBoy15.png",
        PaperBoy16: "images/run/PaperBoy16.png",
        PaperBoy17: "images/run/PaperBoy17.png",
        PaperBoy18: "images/run/PaperBoy18.png",
        PaperBoy19: "images/run/PaperBoy19.png",
        PaperBoy20: "images/run/PaperBoy20.png",
        PaperBoy21: "images/run/PaperBoy21.png",
        PaperBoy22: "images/run/PaperBoy22.png",
        PaperBoy23: "images/run/PaperBoy23.png",
        PaperBoy24: "images/run/PaperBoy24.png",
        _Street:‘images/_Street.png‘,
        AD:‘images/AD.png‘,
        building:‘images/building.png‘,
        cloud:‘images/cloud.png‘
    };
    //执行图片预加载,加载完成后执行main
    loadImages(sources,main);
};
/*end*/
时间: 2024-12-17 16:47:27

【笔记】canvas图片预加载及进度条的实现的相关文章

闭包,jQuery插件的写法:图片预加载

最近做的一些网页,单个网页图片量都比较大,网络不好的情况下,特别卡,这个图片预加载的方法可以牺牲一些时间换来网页的浏览顺畅,还是值得的. //闭包的写法,它内部的变量都是局部的,不会和外部巳有的变量进行冲突 ( function (通过它来接收对象) { } )( 通过它来传递对象 ); //可以使用jQuery的$符号的闭包插件的写法: //写插件的常用方法 $.extentd() (function ($){ //构造函数 function PreLoad(imgs,options){ th

利用简洁的图片预加载组件提升h5移动页面的用户体验

在做h5移动页面,相信大家一定碰到过页面已经打开,但是里面的图片还未加载出来的情况,这种问题虽然不影响页面的功能,但是不利于用户体验.抛开网速的原因,解决这个问题有多方面的思路:最基本的,要从http请求合并,缓存管理,图片压缩等方面做性能优化:另外就是可以对页面里用到的所有图片做预加载的处理,当用户打开页面的时候不立即显示第一屏,而是先显示资源加载效果,等到加载完毕,再来显示页面的主内容,这样就能解决那个问题.虽然这种加载效果占用了用户的浏览时间,但是我们可以把它做的好看有趣一点,所以也不会影

jquery.imgpreload.min.js插件实现页面图片预加载

页面分享地址: http://wenku.baidu.com/link?url=_-G8miwbgDmEj6miyFtjit1duJggBCJmFjR2jky_G1VftD9eS9kwGOlFWAORk2_fotM4RbzRvtcaiQu2y_BU3Gpj0rYRy_EWrgXEuFeja0q 页面分享地址:http://www.jb51.net/article/21987.htm Javascript , Jquery 实现页面图片预加载百分比展现 如果需要在页面初始加载时显示加载进度.主要是

Javascript实现图片预加载【回调函数,多张图片】

使用JS实现一组图片动画效果或者使用HTML5 Canvas渲染一系列图片等案例中,需要图片全部加载完成方可运行动画效果.此时程序中就会涉及多张图片预加载代码.当接二连三的案例中都涉及图片预加载时,就需要考虑把这个功能封装为一个通用方法. (1)下面为JS实现图片预加载方法loadImages(): Js代码   //实现一系列图片的预加载 //参数sources:图片信息关联数组 //参数callback:回调函数——图片预加载完成后立即执行此函数. function loadImages(s

再和“面向对象”谈恋爱 - 图片预加载组件(七)

再和"面向对象"谈恋爱 - 对象简介(一)再和"面向对象"谈恋爱 - 对象相关概念(二)再和"面向对象"谈恋爱 - 面向对象编程概念(三)再和"面向对象"谈恋爱 - class(四)再和"面向对象"谈恋爱 - 继承(五)再和"面向对象"谈恋爱 - super(六) 通过前面的六篇文章已经把ES6的面向对象跟大伙说清楚了,大家最关心的应该是来个例子实战一下,别担心自行车都会有.那这篇文章通

Preload图片预加载(jQuery插件)

背景 我们在做页面的时候,从用户体验的角度出发,肯定是希望用户以最快的速度看到完整的页面信息,但在实际情况中经常会遇到些问题. 比如受网速影响,页面加载素材的时间比较长,页面会出现短时间的错乱或者闪屏: 或者页面素材比较多.比较大,需要一定的加载时间,特别有时候的活动页面,我们一般会把首屏做的更多多样化或者传达比较丰富的氛围的时候,我们的首屏素材上都会比较大,有时候也会给元素加上动画来传达信息,比如我之前做的WeGame新春活动页就是这样的情况: 一般我们的处理方案是在页面素材加载完成之前显示一

【JQuery插件】图片预加载

屏幕滚动到图片当前位置加载图片,给需要预加载的图片设置一个data-url的属性即可. ;(function($){ /* 图片预加载 @author liuming @demo $('img[data-url]').ImgLoading(); */ $.fn.ImgLoading=function(){ var aImgs =$(this),/*缓存图片列表*/ $win = $(window), img,imgTop, winH = $win.height(), Timmer=null, i

图片预加载与图片懒加载的区别与实现

预加载与懒加载,我们经常经常用到,这些技术不仅仅限于图片加载,我们今天讨论的是图片加载: 一.什么是图片预加载与懒加载: 图片预加载:顾名思义,图片预加载就是在网页全部加载之前,提前加载图片.当用户需要查看时可直接从本地缓存中渲染,以提供给用户更好的体验,减少等待的时间.否则,如果一个页面的内容过于庞大,没有使用预加载技术的页面就会长时间的展现为一片空白,这样浏览者可能以为图片预览慢而没兴趣浏览,把网页关掉,这时,就需要图片预加载.当然这种做法实际上牺牲了服务器的性能换取了更好的用户体验. 图

jquery实现图片预加载

使用jquery实现图片预加载提高页面加载速度和用户体,本就为大家详细分析jquery图片预加载的实现原理. 什么时候使用图片预加载? 如果页面使用了很多不是最初加载便可见的图片,有必要进行预加载: $.preloadImages = function () { for (var i = 0; i < arguments.length; i++) { $('img').attr('src', arguments[i]); }};$.preloadImages('img/hover-on.png'