canvas+js绘制序列帧动画

效果:

素材:

源码:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>绘制序列帧动画</title>
</head>
<body>
<canvas id="demo"></canvas>
<script type="text/javascript">
    (function () {
        var canvas = document.getElementById("demo");
        //设置宽高不从css中设置
        canvas.width = 600;//设置canvas宽
        canvas.height = 600;//设置canvas高
        canvas.style.border = "1px solid red";
        //获取上下文
        var ctx = canvas.getContext("2d");
        //加载图片
        var img = new Image();
        img.src = "img/dh.png";
        var frameIndex = 0,dirIndex = 0;
        img.onload = function () {
            setInterval(function () {
                //清除 之前的 图片墨迹。
                ctx.clearRect(0,0,canvas.width,canvas.height);
                ctx.drawImage(
                    img
                    , frameIndex*40    //截取原始图片的 x坐标
                    , dirIndex*65    //截取原始图片的 y坐标
                    , 40    //截取原始图片的 宽度
                    , 65    // 截取的高度
                    , 200    //图片在canvas画布上的x坐标
                    , 200    //图片在canvas画布上的y坐标
                    , 80    //绘制图片的宽度
                    , 65 *2    //绘制图片的高度
                );
                frameIndex++;// 添加到下一帧
                frameIndex %=4;// 取余数   7 %4 = 3   3%4 =3  4%4 =0
                console.log(frameIndex);
            },100)
        }
    }());
</script>
</body>
</html>

原文地址:https://www.cnblogs.com/alex-xxc/p/10038877.html

时间: 2024-10-28 15:30:15

canvas+js绘制序列帧动画的相关文章

使用 canvas+JS绘制钟表

效果如下: 附上代码: 1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="UTF-8"> 5 <title>使用Canvas绘制钟表</title> 6 <style> 7 body { 8 background-color: pink; 9 } 10 #clock { 11 display: block;

canvas绘制简易动画

在canvas画布中制作动画相对来说很简单,实际上就是不断变化的坐标.擦除.重绘的过程 1.使用setInterval方法设置动画的间隔时间. setInterval(code,millisec) setInterval方法html中固有方法,这个方法接受两个参数,第一个函数表示执行动画的函数,第二个参数为间隔时间,单位是(毫秒). 2.用来绘图的函数 1)通过不断变换X和Y的坐标实现动画的效果. 2)在该函数中先用clearRect方法将画布整体或者局部擦除. 擦除图像clearRect方法:

Android中使用SurfaceView和Canvas来绘制动画

其实每个View中都有Canvas可以用来绘制动画,只需要在这个View中重载onDraw()方法就可以,但是SurfaceView类是一个专门用来制动动画的类. Canvas(中文叫做"画布")就和HTML5中的canvas标签一样可以在一定区域内自由绘制图形.Canvas+SurfaceView制作的动画与View Animation和Property Animation这类动画比起来更加适合大量的集中播放的动画,比如游戏画面.相机的图像显示等. 因为SurfaceView通常会在

HTML5 Canvas核心技术—图形、动画与游戏开发.pdf1

canvas元素可以说是HTML5元素中功能最强大的一个,它真正的能力是通过Canvas的context对象(绘图上下文)表现出来的 fillText()方法使用fillStyle属性来填充文本中的字符,strokeText()方法使用strokeStyle属性描绘字符的轮廓线,fillStyle属性和strokeStyle属性可以是CSS格式的颜色.渐变色或是图片 fillText()与strokeText()方法都需要3个参数:要绘制的文本内容,以及在canvas中显示文本的横.纵坐标 注意

canvas基础绘制-绚丽倒计时

效果图: html: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>ball</title> <script src="digit_1.js"></script> <script src="countdown.js"></

用css3和canvas实现的蜂窝动画效果

近期工作时研究了一下css3动画和js动画.主要是工作中为了增强页面的趣味性,大家都有意无意的加入了非常多动画效果.当然大部分都是css3动画效果.能够gpu加速,这会降低移动端的性能需求. 今天主要说的是蜂窝效果.详细效果大家等下能够执行源代码.这里就不放gif图了. css3的原理非常easy,就是通过更改background-size,因为css3中的background中能够设置repeat属性,来使背景图片在x,y方向平铺.一開始先设置background-size:10%, 10%,

HTML5 Canvas核心技术—图形、动画与游戏开发.pdf6

操作图像的像素:getImageData() putImageData() ImageData对象 调用getImageData()方法实际是获取了一个指向ImageData对象的引用,返回的对象包含3个属性:1)width以设备像素为单位的图像数据宽度 2)height以设备像素为单位的图像数据高度 3)data包含各个设备像素数值的数组 width和height都是只读的无符号长整数,data属性包含的每个数组元素都表示图像数据中相应的像素值,每个值包含的颜色分量都是含有8个二进制位的整数(

Canvas 彩色像素滚动条动画 案例分析

最近在学习canvas学习过程中记录下我个人对canvas用法的理解与分析,之前没有用canvas做案例的时候 就只知道canvas有一些属性,但是用到的时候才知道自己知道的canvas是那么少.下面我就分析一下今天我研究一天的canvas案例吧.多有不足之处 请看到的同学批评指正.大概就是类似图片样式滚动显示效果. 1.HTML代码部分 写进<canvas></canvas>标签 2.用javascript代码控制canvas画布,下面是代码部分 代码的解析我就直接在代码展示区域

html5 canvas高级贝塞尔曲线运动动画(本篇跨度较大!为了帮助别人解决个问题顺带的!)

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-