zoukankan      html  css  js  c++  java
  • JS构造函数------封装帧动画

    在我们开发web端或者H5嵌套IOS和安卓时候,有时候需求会有动效这一说,这时候传统意义上的视频加载就无济于事了,因为在H5嵌套中会出现兼容等一系列的问题所以,为了实际开发需求我们需要对视频逐帧播放代码如下

    function Frame_animation(afferent) {
        if(!afferent.url){
            console.error('请传入图片');
            return
        };
        if(!afferent.el){
            console.error('请传入DOM元素');
            return
        };
        if(!afferent.min){
            console.error('请传入图片起始位置');
            return
        };
        if(!afferent.max){
            console.error('请传入图片结束位置');
            return
        };
        this.setime = null;//计时器默认是关闭状态
        this.list_arr = [];//全部的img标签默认为null
        this.el = afferent.el; //获取到dom元素最后网址而立添加img
        this.max = afferent.max;//获取到图片的总量
        this.min = afferent.min;//获取到图片的初始值
        this.url = afferent.url.split("{index}");//获取到图片的路径
        this.new_arr = []
    };
    Frame_animation.prototype.img function (i){//创建img
        var img = new Image();//每次创建一个img
        img.src = this.url[0]+i+this.url[1];
        img.style.display = 'none';
        return img
    };
    Frame_animation.prototype.cache function () {//创建图片
        if(this.list_arr.length>1){return}
        for(let _= this.min;_<this.max;_++){
            this.el.appendChild(this.img(_))//获取到每一个img的标签并且依次添加到父节点中
            this.list_arr.push(this.img(_))//获取到的每一个img节点push到一个数组中用于进行循环
        }
    };
    Frame_animation.prototype.play function(){//点击开始图片播放
        if(this.list_arr.length<1){this.cache()}//如果没有就创建-如有没有就进行创建
        var a = document.querySelectorAll('img')
        var s = Array.prototype.slice.call(a)
        let count = 1 ;//创建一个初始值索引值
        this.setime = setInterval(()=>{
            if(count==this.max){count = this.min}
            s.map(_=>_.style.display = 'none');
            s[count-1].style.display = 'block'
            ++count;
        },35);
    };
    Frame_animation.prototype.stop function(){
        if(this.setime){
            clearInterval(this.setime)
            this.setime = null
        }
    };

    如上是一个构造函数,我们只需要传入一下参数

       var paly_img = new Frame_animation({
                el : document.querySelector('.img'),(索要呈现的DOM结构)
                url : '../app/bmsj_{index}.png',(图片实际的路径,其中index为每张图片的索引,索引值从1开始)
                min : 1,(第一张)
                max : 125,(最后一张)
            });
            paly_img.play();
    

      这样我们就可以进行振动画的展示了

  • 相关阅读:
    跨域请求携带cookie
    vue单文件组件实例1:简单单文件组件
    vue单文件组件实例2:简单单文件组件
    vue路由1:基本使用
    项目中常用的javascript/jquery操作
    vue计算属性和侦听器
    专题8:javascript中事件
    普通文件的上传(表单上传和ajax文件异步上传)
    python导入包出错:ImportError: No module named XXXXX

  • 原文地址:https://www.cnblogs.com/blur-king/p/13557758.html
Copyright © 2011-2022 走看看