• html5 使用canvas 显示动画(图片)序列帧


    <!doctype html>
    <html lang="zh">
    <head>
        <meta charset="UTF-8">
        <title>canvas导入序列帧</title>
    </head>
    <body>
    <canvas id="animation_canvas" width="640" height="1030" style="background-color: #fff;"></canvas>
    </body>
    <script>
        //初始化参数
        var canvas = null;
        var ctx = null;
        //预加载序列图片
        function loadImages(sources,callback){
            var loadedImages = 0;
            var numImages = 0;
            var images=[];
            var clearWidth=canvas.width;
            var clearHeight=canvas.height;
            // get num of sources
            numImages=sources.length;
            for (var i=0,len=sources.length;i<len;i++) {
                images[i] = new Image();
                //当一张图片加载完成时执行
                images[i].onload = function(){
                    //当所有图片加载完成时,执行回调函数callback
                    if (++loadedImages >= numImages) {
                        callback(images);
                    }
                };
                //把sources中的图片信息导入images数组
                images[i].src = sources[i];
    //            console.log(images);
            }
        }
        //播放图片动画
        function playImages(images){
            var imageNum=images.length;
            var imageNow=0;
            setInterval(function(){
    //      ctx.fillStyle="rgba(0,0,0,0)";
                ctx.clearRect(0,0,640,1030);
                ctx.fillRect(0, 0, 640, 1030);
                ctx.drawImage(images[imageNow], 0, 0, 640, 1030);
                imageNow++;
                if(imageNow>=imageNum){
                    imageNow=89;
                }
            },100)
        }
        //初始化
        window.onload = function(){
            var sources = [];
            //构建图片序列数据
            for(var i=0;i<=146;i++){
                sources[i] = 'images/0/01_' + i + '.png';//根据项目修改
            }
            canvas = document.getElementById("animation_canvas");
            canvas.width = 640;
            canvas.height = 1030;
    
            ctx = canvas.getContext("2d");
            //ctx.globalAlpha=0.5
            //执行图片预加载,加载完成后执行main
            loadImages(sources,function(images){
                playImages(images)
            });
        };
    
    </script>
    
    </html>
    

      

  • 相关阅读:
    20169204,EXP 3:Java object
    20169204,EXP 2:Java object
    20169204,exp1:Familiar with the Java development environment(Linux+IDEA)
    20169204 2016-2017-2 <Mobbile Platform Development and Practice> Learning Summary, Seventh Week
    第一次使用MarkDown写博客
    理解IOC
    .net与技术经理面谈时经常被提问到的相关技术点
    缓存二、HttpRuntime.Cache用法
    缓存一、Asp.net页面缓存
    一次提交涉及两个数据库处理
  • 原文地址:https://www.cnblogs.com/xiaojf/p/12320657.html
Copyright © 2020-2023  润新知