zoukankan      html  css  js  c++  java
  • html5 canvas用动画的形式装载图像

    本示例使用HTML5 canvas,简单的编写了装载图片效果, 请使用支持HTML5的浏览器预览效果:

    下图为以逐渐横向栅格的效果图

    html部分:

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>html5 装载图片</title>
    </head>
    <body>
    <button onclick="drawImg1()">从左到右</button>
    <button onclick="drawImg2()">从中央到左右两边</button>
    <button onclick="drawImg3()">以逐渐横向栅格</button>
    <hr/>
    <canvas class="canvas" id="canvas" width="600" height="300"></canvas>
    </body>
    </html>

    JavaScript部分:

      //初始化
        var canvas = document.getElementById("canvas"),
            context = canvas.getContext("2d"),
            image = new Image();
            image.src = "img/test.jpg";  
    
        //从左到右加载方法
        function drawImg1(){
            var drawWidth = 0,
                interval = setInterval(function(){
                    context.drawImage(image, 0, 0, drawWidth, image.height, 0, 0, drawWidth, image.height);
                    drawWidth += 20;
                    if(drawWidth > canvas.width) clearInterval(interval);
                },100);
        }
    
        //从中央向左右两边拉开加载方法
        function drawImg2(){
            var drawWidth = 0,
                drawLeft = canvas.width/2,
                interval = setInterval(function(){
                    context.drawImage(image, drawLeft, 0, drawWidth, image.height, drawLeft, 0, drawWidth, image.height);
                    drawWidth += 20;
                    drawLeft -= 10;
                    if(drawLeft < 0) clearInterval(interval);
                },100);
        }
        
        //以逐渐横向栅格加载方法
        function drawImg3(){
            var drawWidth = 0,
                spaceWidth = canvas.width/20,  //10指分割的块数
                interval = setInterval(function(){
                    for(var i = 0;i<20;i++){
                        context.drawImage(image, i*spaceWidth, 0, drawWidth, image.height, i*spaceWidth, 0, drawWidth, image.height);
                    }
                    drawWidth += 5;
                    if(drawWidth > spaceWidth) clearInterval(interval);
                },100);
        }
  • 相关阅读:
    PHP 中 define() 和 const 定义常量时的区别
    tar 解压常用压缩文件格式命令大全
    JVM的GC策略
    守护线程(Daemon Thread)
    探索HashMap实现原理及其在jdk8数据结构的改进
    Java面试& HashMap实现原理分析
    Java分布式应用
    全面理解Java内存模型
    Java& Vector与ArrayList区别
    深入理解Java虚拟机&运行时数据区
  • 原文地址:https://www.cnblogs.com/yifengBlog/p/5254212.html
Copyright © 2011-2022 走看看