javascript+HTML5的Canvas实现Lab单车动画效果


Posted in Javascript onAugust 07, 2015

本文实例讲述了javascript+HTML5的Canvas实现Lab单车动画效果。分享给大家供大家参考。具体如下:

这里运用HTML5实现的单车动画,运行一下效果你就明白了,不过不要在IE8下测试,没效果的。请在支持最新HTML3和CSS3的浏览器下测试,祝您好运。

运行效果截图如下:

javascript+HTML5的Canvas实现Lab单车动画效果

具体代码如下:

<html>
<head>
<title>Canvas Lab单车动画,HTML5动画</title>
</head>
 <script type="text/javascript">
  var framecounter = 800;//为了完成作业,无耻了点,在这里设置变量……
  var direction = "left";
  function drawBikeBody () {
   var canvas = document.getElementById('diagonal');
   var context = canvas.getContext('2d');
   context.lineWidth = 3;
   context.beginPath();
   context.moveTo(0,0);
   context.lineTo(150,0);
   context.lineTo(100,100);
   context.closePath();
   context.moveTo(100,100);
   context.lineTo(200,75);//后轮轴承点
   context.lineTo(150,0);
   //下面那个一个脚踏
   context.moveTo(100,100);
   context.lineTo(110,120);
   context.lineTo(120,120);
   context.moveTo(110,120);
   context.lineTo(100,120);
   //另一个脚踏
   context.moveTo(100,100);
   context.lineTo(90,80);
   context.lineTo(100,80);
   context.moveTo(90,80);
   context.lineTo(80,80);
   //座包
   context.moveTo(150,0);
   context.lineTo(160,-20);
   context.lineTo(175,-20);
   context.moveTo(160,-20);
   context.lineTo(135,-20);
   //扶手
   context.moveTo(0,0);
   context.lineTo(15,-30);
   context.lineTo(10,-35);
   context.lineTo(20,-40);
   context.lineTo(40,-40);
   //前轮轴承
   context.moveTo(0,0);
   context.lineTo(-35.5,75);//前轮轴承点
   //前轮
   context.moveTo(75-35.5,75);//去掉这个目测不行啊,貌似context.arc()方法里有lineTo
   context.arc(-35.5,75,75,0,Math.PI*2,true);
   //后轮
   context.moveTo(200+75,75);
   context.arc(200,75,75,0,Math.PI*2,true);
  }
  function drawForcePiece1(){
   var canvas = document.getElementById('diagonal');
   var context = canvas.getContext('2d');
   context.beginPath();
   for(var i = framecounter; i < framecounter+360; i += 20) { 
    context.moveTo(-35.5,75);
    x = Math.cos(Math.PI / 180 * i) * 75 + (-35.5); 
    y = Math.sin(Math.PI / 180 * i) * 75 + 75; 
    context.lineTo(x,y);
    }
  }
  function drawForcePiece2(){
   var canvas = document.getElementById('diagonal');
   var context = canvas.getContext('2d');
   context.beginPath();
   for(var i = framecounter; i < framecounter+360; i += 20) { 
    context.moveTo(200,75);
    x = Math.cos(Math.PI / 180 * i) * 75 + 200; 
    y = Math.sin(Math.PI / 180 * i) * 75 + 75; 
    context.lineTo(x,y);
    }
  }
  function drawBike(){
   var canvas = document.getElementById('diagonal');
   var context = canvas.getContext('2d');
   context.clearRect(0, 0, 800, 600);
   context.save();
   context.translate(framecounter,300);
   drawBikeBody();
   context.stroke();
   context.restore();
   context.save();
   context.translate(framecounter,300);
   drawForcePiece1();
   context.stroke();
   context.restore();
   context.save();
   context.translate(framecounter,300);
   drawForcePiece2();
   context.stroke();
   context.restore();
   if (direction==="left") {
    framecounter--;
   }else{
    framecounter++;
   }
  }
  function move() {
   var interal = setInterval(function () {
  drawBike();
  }, 10);
  }  
  window.addEventListener("load",move,true);
 </script>
 <body>
  <canvas id="diagonal" width="800" height="600" style="border:1px dashed">Please update your brower to the newest version!</canvas>
  <br>
  <button id="reset" onclick="framecounter=800;">Reset</button>
  <button id="left" onclick="direction='left'">Go Left</button>
  <button id="right" onclick="direction='ture'">Go Right</button>
 </body>
</html>

希望本文所述对大家的javascript程序设计有所帮助。

Javascript 相关文章推荐
JS面向对象编程 for Cookie
Sep 19 Javascript
jQuery表单获取和失去焦点输入框提示效果的实例代码
Aug 01 Javascript
JavaScript函数定义的常见注意事项小结
Sep 16 Javascript
JS实现网页滚动条感应鼠标变色的方法
Feb 26 Javascript
AngularJS监听路由的变化示例代码
Sep 23 Javascript
浅谈jquery中使用canvas的问题
Oct 10 Javascript
js拼接html字符串的注意事项
Oct 13 Javascript
vue省市区三联动下拉选择组件的实现
Apr 28 Javascript
Angular通过指令动态添加组件问题
Jul 09 Javascript
关于vue v-for循环解决img标签的src动态绑定问题
Sep 18 Javascript
在vue中使用echarts图表实例代码详解
Oct 22 Javascript
js实现简单的秒表
Jan 16 Javascript
jQuery实现仿腾讯视频列表分页效果的方法
Aug 07 #Javascript
jQuery使用animate创建动画用法实例
Aug 07 #Javascript
浅谈JavaScript 的执行顺序
Aug 07 #Javascript
javascript封装 Cookie 应用接口
Aug 07 #Javascript
jQuery实现鼠标经过弹出提示信息的地图热点效果
Aug 07 #Javascript
jQuery与getJson结合的用法实例
Aug 07 #Javascript
《JavaScript函数式编程》读后感
Aug 07 #Javascript
You might like
php获取后台Job管理的实现代码
2011/06/10 PHP
关于UEditor编辑器远程图片上传失败的解决办法
2012/08/31 PHP
win7+apache+php+mysql环境配置操作详解
2013/06/10 PHP
Jquery阻止事件冒泡 event.stopPropagation
2011/12/11 Javascript
jquery中使用$(#form).submit()重写提交表单无效原因分析及解决
2013/03/25 Javascript
jQuery制作仿腾讯web qq用户体验桌面
2013/08/20 Javascript
js日期、星座的级联显示代码
2014/01/23 Javascript
排序算法的javascript实现与讲解(99js手记)
2014/09/28 Javascript
什么是 AngularJS?AngularJS简介
2014/12/06 Javascript
jQuery老黄历完整实现方法
2015/01/16 Javascript
JS实现点击颜色块切换指定区域背景颜色的方法
2015/02/25 Javascript
Redis基本知识、安装、部署、配置笔记
2015/03/05 Javascript
cookie的secure属性详解
2015/04/08 Javascript
在AngularJS中使用AJAX的方法
2015/06/17 Javascript
浅析javascript中的Event事件
2016/12/09 Javascript
js 递归和定时器的实例解析
2017/02/03 Javascript
JS返回顶部实例代码
2020/08/09 Javascript
mpvue中配置vuex并持久化到本地Storage图文教程解析
2018/03/15 Javascript
小程序hover-class点击态效果实现
2019/02/26 Javascript
json_decode 索引为数字时自动排序问题解决方法
2020/03/28 Javascript
[03:17]2016完美“圣”典风云人物:冷冷专访
2016/12/08 DOTA
Python六大开源框架对比
2015/10/19 Python
Django中利用filter与simple_tag为前端自定义函数的实现方法
2017/06/15 Python
基于python实现蓝牙通信代码实例
2019/11/19 Python
在Keras中利用np.random.shuffle()打乱数据集实例
2020/06/15 Python
独特的礼品和创新的科技产品:The Grommet
2018/02/24 全球购物
奢华的意大利皮革手袋:Bene Handbags
2019/10/29 全球购物
PyQt QMainWindow的使用示例
2021/03/24 Python
迎新晚会策划方案
2014/06/13 职场文书
党的群众路线教育实践活动个人对照检查材料(四风)
2014/11/05 职场文书
2014年学生会生活部工作总结
2014/11/07 职场文书
应届毕业生求职信范文
2015/03/19 职场文书
2015年先进个人自荐书
2015/03/24 职场文书
2015年行政助理工作总结
2015/04/30 职场文书
初三化学教学反思
2016/02/22 职场文书
MySQL系列之三 基础篇
2021/07/02 MySQL