zoukankan      html  css  js  c++  java
  • 图片预加载

    第一种方法,异步回调,执行完这个函数,在回调<!DOCTYPE html<html lang="en"><head>

        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>Document</title>
    </head>
    <body>
        
        <script>
            //创建数组 用于保存图片的对象
            var arr=[];
            var num=1;
            //创建图片对象
            var img=new Image();
            //把第一张图片加载到缓存中
            img.src="./image/icon/"+num+".gif";
         //添加这个图片
         arr.push(img);
    //给对象img 添加加载事件 img.addEventListener("load",loadHandler); //图片加载事件 function loadHandler(){//移除load事件,要吗都会在缓存中挂载 img.removeEventListener("load",loadHandler); //重新实例化img对象 img=new Image(); num++; if(num>6){ return; } //给img再次添加load事件,并调用自身 递归函数 也是回调函数 img.addEventListener("load",loadHandler); //在把下一张图片添加进来 就可以了 img.src="./image/icon/"+num+".gif"; } </script> </body> </html>

    第二种方式,在第一种的基础上 给img对象 添加属性 方便后期调用

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>Document</title>
    </head>
    <body>
        
    
        <script>
            //首先把图片存入数组中
            var arr=[];
            for(i=1;i<=6;i++){
                arr.push("./image/icon/"+i+".gif");
            }
            
    
            //执行这个函数,参数1  为当前存入图片的数组,参数2为回调函数,执行完getImage函数后调用callbackFun
            getImage(arr,callbackFun);
    
            function getImage(arr,callback){
                //创建图片对象
                var img=new Image();
                //给图片对象添加 arr num imagelist callback的属性,方便后面使用
                img.arr=arr;
                img.num=0;
                img.imageList=[];
                img.callback=callback;
                //给图片添加事件
                img.addEventListener("load",loadHandler);
                //加载当前第1张图片  num=0 就是数组中的1
                img.src=arr[img.num];
            }
    
            //图片加载事件
            function loadHandler(){
                //把img下面的imagelist属性 push的对象
                this.imageList.push(this);
                //num增加
                this.num++;
                if(this.num>5){
                    //这里的callback回调函数,就是我们传递进去需要显示imagelist用的
                    this.callback(this.imageList);
                    return
                }
                //加载下一张图片
                this.src=this.arr[this.num];
            }
    
            function callbackFun(arr){
                console.log(arr);
            }
        </script>
    </body>
    </html>

      图片预加载封装,其实就是把上面的代码 单独写在一个js文件中,通过引用的方式来调用 注意代码中的this

    新建一个Yimage.js文件

    function getImage(arr,callback){
        //创建图片对象
        var img=new Image();
        //给图片对象添加 arr num imagelist callback的属性,方便后面使用
        img.arr=arr;
        img.num=0;
        img.imageList=[];
        img.callback=callback;
        //给图片添加事件
        img.addEventListener("load",this.loadHandler);
        //加载当前第1张图片  num=0 就是数组中的1
        img.src=arr[img.num];
    }
    
    //图片加载事件
    function loadHandler(){
        //把img下面的imagelist属性 push的对象
        this.imageList.push(this);
        //num增加
        this.num++;
        if(this.num>5){
            //这里的callback回调函数,就是我们传递进去需要显示imagelist用的
            this.callback(this.imageList);
            return
        }
        //加载下一张图片
        this.src=this.arr[this.num];
    }

    index主文件中的内容

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>Document</title>
        <script src="./js/Yimage.js" ></script>
    </head>
    <body>
        
    
        <script>
            var arr=[];
            for(i=1;i<=6;i++){
                arr.push("./image/icon/"+i+".gif");
            }
            
            
            getImage(arr,callbackfun);
            function callbackfun(arr){
                console.log(arr.src);
            }
        </script>
    </body>
    </html>
  • 相关阅读:
    net core 使用 rabbitmq
    asp.net core WebApi 返回 HttpResponseMessage
    asp.net core 2.1 WebApi 快速入门
    JQuery EasyUI combobox动态添加option
    php截取字符去掉最后一个字符
    JQuery EasyUI Combobox的onChange事件
    对于不返回任何键列信息的 selectcommand 不支持 updatecommand 的动态 sql 生成
    Access2007 操作或事件已被禁用模式阻止解决办法
    Easyui 中 Tabsr的常用方法
    Win 7 IE11不能下载文件,右键另存为也不行
  • 原文地址:https://www.cnblogs.com/xiaowie/p/13638524.html
Copyright © 2011-2022 走看看