首页 > 特效插件 > 动画插件 >  canvas-keyframes.min.js将序列图生成帧动画插件正文

canvas-keyframes.min.js将序列图生成帧动画插件

特效介绍


    我爱模板网有个需求,做一个沿线路运动的光的动画,起初用GIF实现,发现动画质量太差了。只能用js将几十张png图片接连播放,如果网络差可能会有闪烁效果,当然也可以等所有图片都加载完再执行。但是,当我在网上闲逛时,发现了:canvas-keyframes.min.js,它是一款强大的可以将序列图片生成canvas并实现连续播放的js插件。而且它可以通过参数轻松配置动画的快慢,并且多次调用能在一个页面生成多个动画,由于生成的是canvas,控制样式也很方便。
使用方法
1、定义一个容器,用来显示canvas动画,控制其大小和帧一样大。如下:
1.animate{width: 640px; height:480px; margin:auto;}
2<div class="animate"></div>
2、引入canvas-keyframes.min.js
1<script src="js/canvas-keyframes.min.js"></script>
3、在页面或您的公共js中加入下面的函数,这个函数是我爱模板网对调用的封装,传几个参数更加方便
01function keyAnimate(dom,startnum,picnum,path,fps){
02    var count = 0;
03    var imgArr = [];
04    for(var i=0;i<=picnum;i++){
05        (function(i){
06            var img = new Image();
07            img.onload = function(){
08                img.onload = null;
09                count++;
10                // 有可能图片加载有快有满慢,所以用角标存
11                imgArr[i-1] = img;
12                if(count==picnum){
13                    keyFrames(imgArr);
14                }
15            }
16            img.onerror = function(){
17            }
18            img.src = path+(startnum+i)+'.png';
19        })(i);
20    }
21    var keyFrames;
22    function keyFrames(imgArr){
23        keyFrames = new CanvasKeyFrames(document.querySelector(dom), 'array', imgArr, {
24            fps:fps || 24  //动画速度
25        });
26        keyFrames.play();
27    }
28}
参数说明:
    dom:需要显示动画的div的选择器
    startnum:起始帧图片的名字,不要扩展名
    picnum:序列图数量
    path:图片相对于当前页面的位置
    fps:不用说都明白!不传的话,默认是每秒24帧

4、调用示例
1keyAnimate('.animate',1,33,'img/',60);

下载 提取码/密码:6me9(点击复制密码) 预览