前言

之前两篇文章讲了一些canvas基础入门的知识点和一下小案例如下:
Canvas初探入门— 基础图形的绘制
Canvas初探入门—实现鼠标画板
这一篇通过案例实现人物移动动画,下面一起来看看

实现功能

点击开始,人物按照设定好的路线开始移动,点击暂停停止移动,能够按照设置的路线完成任务移动

步骤

1.绘制人物对象的信息

首先我们要确定人物的行驶路径,从哪个坐标开始到哪个坐标结束。然后获得 CanvasRenderingContext2D 对象,该对象提供基本的绘图命令。

window.onload = function(){var arr = [{x:0,y:0},{x:200,y:300}];  //行驶坐标点var speed = 1,timer,flag=false; //速度var canvas = document.getElementById('myCanvas');var ctx = canvas.getContext('2d');var img = new Image();img.src='img/person.png';
}

2.点击事件

这里对点击事件进行了封装的处理,
点击开始之后,执行下面定时器的play
点击暂停,执行定时器的stop

//单击事件
document.querySelector(".play").onclick=function(){play()};
document.querySelector(".stop").onclick=function(){stop()};

3.路线绘制

点击了按钮之后,人物要进行移动,那么这里就要设置一个定时器控制人物移动的绘图
这里是定时器的开始和暂停

//定时器   开始
function play(){if(flag) return;timer = setInterval(draw,2);flag = true;
};
//暂停
function stop(){clearInterval(timer);flag = false;
}

定时器开始之后,就要进行路径的绘制
首先我们要分析人物路线的逻辑,坐标从{x:0,y:0}到{x:200,y:300},x和y的值都会一点点的加上来,
判断数组中第0个x的值<一个的x的值的话,就要进行+的处理arr[0].x+=speed; 后面y同理
然后绘制对应的背景图片 ctx.drawImage(img,arr[0].x,arr[0].y,30,30);属性分别代表:图片地址,x轴,y周,宽,高的意思,此时我们就可以在第一步的信息中加入图片的信息

function draw(){ctx.clearRect(0,0,canvas.width,canvas.height);//清除画布内容if(arr[0].x<arr[1].x){arr[0].x+=speed;};if(arr[0].y<arr[1].y){arr[0].y+=speed;};//drawImage(img,x,y,w,h);ctx.drawImage(img,arr[0].x,arr[0].y,30,30);//行驶的轨迹ctx.strokeStyle='green';ctx.lineTo(arr[0].x,arr[0].y);  //画点ctx.stroke();  //执行绘制}

因为canvas是每次绘制一个图像,所以我们需要在每次定时器运行的时候清除画布的内容
这里还给人物设置了一个行驶的轨迹,添加一个人物坐标的线即可

最后

这个小案例的关键就是实现人物路径的绘制和移动,也就是draw中的逻辑,关于人物移动的路线主要就是通过坐标进行控制,还有人物速度等,都能通过属性进行自定义。其实重点就是掌握坐标画点,以及坐标变化的逻辑,有想自己试试的也可以私我获取案例源码~

canvas入门初探—实现人物移动动画相关推荐

  1. Canvas入门教学(4)动画与碰撞检测

    上节课给大家分享了canvas里对于图像的操作,我们可以截取图像,并且以像素为单位改变图片,这节课来给大家分享canvas的动画操作. 首先我们先来实现一个例子,我希望制作一个小球在浏览器屏幕里来回移 ...

  2. 2D游戏入门——小狐狸系列(六)为人物添加动画

    Session06:动画效果Animation 添加动画效果 这节课我们来为人物添加动画效果 先为人物创建一个Animator组件,并创建一个Animator Controller,将它拖到Anima ...

  3. html5 canvas实际应用,Html5 Canvas入门及经典应用

    Html5 Canvas入门及经典应用 时间:2019-02-15     来源:华清远见 canvas想必对于前端的工程师都不陌生了,它是 HTML5 新增的「画布」元素,是HTML5 的一大亮点, ...

  4. Canvas入门教程

    Canvas入门教程 1. Canvas初识 1.1 Canvas基础 1.2 Canvas填充与路径绘制 1.3 Canvas绘制圆 1.4 Canvas绘制折线线段 1.5 贝塞尔曲线实现 1.6 ...

  5. Canvas入门-利用Canvas绘制好玩的电子时钟

    在这之前 你需要了解一下方法的使用: beginPath() closePath() moveTo() lineTo() fill() stroke() fillRect() clearRect() ...

  6. Torchlight(火炬之光)人物骨骼动画

    火炬之光的人物骨骼动画信息并不存储在skeleton文件里, 而是单独的放在animation文件里, 通过它将动画与音效,特效关联起来的. 所以为了不改变游戏中的文件内容, 我采用了读取配置文件的方 ...

  7. canvas入门实战--邀请卡生成与下载

    1.前言 写了很多的javascript和css3的文章,是时候写一篇canvas的了.canvas是html5提供的一个新的功能!至于作用,就是一个画布.然后画笔就是javascript.canva ...

  8. Mocha 和 Chai 入门初探

    转载自楼主个人博客 Mocha 和 Chai 入门初探 Chai 在和 jest 作比较的时候, 两者主要的不同就是 jest 的集成度比较高内置断言库, 而 mocha 需要搭配额外的断言库, 在此 ...

  9. 基于JavaScript的人物走路动画

    基于JavaScript的人物走路动画 想要实现人物走路的动态图,可以连续更换图片,给人一种人物在走路的假象,但是接下来我们用另外一种方法来实现,将所有单张图片拼接成一个长图,可以让图片移动代替更换图 ...

最新文章

  1. Redis实际应用:限流
  2. 1833: [ZJOI2010]count 数字计数
  3. Python+django网页设计入门(9):自定义反爬虫功能
  4. 详解vue静态资源打包中的坑与解决方案
  5. [转帖] IPsec相关知识 --未知来源
  6. Phoenix=HBase+SQL,让HBase插上了翅膀
  7. matlab 卷积改变步长,转载“MATLAB卷积函数改进”
  8. 力扣 面试题 08.04. 幂集
  9. 压力测试工具Jmeter使用详解
  10. mac下Cornerstone显示日志问题 Cound not contact repository to read the latest log entries
  11. mysql计算同比和环比的区别_MySQL实践之同比环比
  12. 电脑显示黑屏但是鼠标能动怎么处理?
  13. 学生类输入输出姓名学号
  14. Python math.perm() 方法
  15. 郭天祥单片机编程100例程序及随笔3——定时器编程
  16. IR Cut Filter主要作用分别是什么?_安防 | 说说监控摄像头中IR-CUT双滤光片哪些事...
  17. curl:Failed connect to github-production-release-asset-2e65be.s3...; Connection refused解决办法
  18. 计算机设计网页基础知识,网页设计的基础知识
  19. 智慧金融时代,大数据和AI如何为业务赋能
  20. 【IBM MQ】AMQ6126问题解决思路

热门文章

  1. 简历中的“自我评价“怎么写?记录一个满分模板
  2. LBS基站定位和GPS卫星定位对比
  3. 家庭用户无线上网案例(AC通过三层口对AP进行管理)
  4. 液晶面板里面有些什么配件_一个手机的液晶总成都包含什么部件?
  5. linux系统基本运维命令
  6. 阿拉巴数字转化为中文大写
  7. APP页面的四种类型,你都知道吗?
  8. centos 挂载iso光盘镜像文件
  9. 全新2009高校BBS上充满温馨的100个调情小笑话
  10. (待填坑)【字符串】manacher(马拉车)算法