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的写法基础分析
Jan 17 Javascript
jQuery EasyUI API 中文文档 - MenuButton菜单按钮使用介绍
Oct 06 Javascript
jQuery实现列表自动循环滚动鼠标悬停时停止滚动
Sep 06 Javascript
jQuery实现图片放大预览实现原理及代码
Sep 12 Javascript
基于jQuery实现的菜单切换效果
Oct 16 Javascript
jquery实现简单的表单验证
Nov 17 Javascript
微信小程序开发之录音机 音频播放 动画实例 (真机可用)
Dec 08 Javascript
jQuery电话号码验证实例
Jan 05 Javascript
原生JS实现几个常用DOM操作API实例
Jan 19 Javascript
基于jQuery实现一个marquee无缝滚动的插件
Mar 09 Javascript
详解vue-element Tree树形控件填坑路
Mar 26 Javascript
vue接入腾讯防水墙代码
May 07 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 用checkbox一次性删除多条记录的方法
2010/02/23 PHP
11个PHP 分页脚本推荐
2011/08/15 PHP
选择TreeView控件的树状数据节点的JS方法(jquery)
2010/02/06 Javascript
JS的反射问题
2010/04/07 Javascript
火狐textarea输入法的bug的触发及解决
2013/07/24 Javascript
js 获取元素在页面上的偏移量的方法汇总
2015/04/13 Javascript
使用Raygun对Node.js应用进行错误处理的方法
2015/06/23 Javascript
JSON遍历方式实例总结
2015/12/07 Javascript
vuejs响应用户事件(如点击事件)
2017/03/14 Javascript
Vue2.0 UI框架ElementUI使用方法详解
2017/04/14 Javascript
es7学习教程之fetch解决异步嵌套问题的方法示例
2017/07/21 Javascript
Vue 表单控件绑定的实现示例
2017/08/11 Javascript
基于JavaScript实现新增内容滚动播放效果附完整代码
2017/08/24 Javascript
vue+vue-validator 表单验证功能的实现代码
2017/11/13 Javascript
vue.js vue-router如何实现无效路由(404)的友好提示
2017/12/20 Javascript
jQuery获取所有父级元素及同级元素及子元素的方法(推荐)
2018/01/21 jQuery
vue-cli中的babel配置文件.babelrc实例详解
2018/02/22 Javascript
bootstrap模态框关闭后清除模态框的数据方法
2018/08/10 Javascript
Angular 实现输入框中显示文章标签的实例代码
2018/11/07 Javascript
详解使用webpack+electron+reactJs开发windows桌面应用
2019/02/01 Javascript
JavaScript实现页面高亮操作提示和蒙板
2021/01/04 Javascript
[51:05]DOTA2上海特级锦标赛主赛事日 - 5 败者组决赛Liquid VS EG第一局
2016/03/06 DOTA
尝试用最短的Python代码来实现服务器和代理服务器
2016/06/23 Python
Python实现将文本生成二维码的方法示例
2017/07/18 Python
python实现list由于numpy array的转换
2018/04/04 Python
Python实现注册、登录小程序功能
2018/09/21 Python
Python 去除字符串中指定字符串
2020/03/05 Python
利用python绘制数据曲线图的实现
2020/04/09 Python
python实现数字炸弹游戏
2020/07/17 Python
css3实现小箭头各种图形效果
2020/07/08 HTML / CSS
网络公司美工设计工作个人的自我评价
2013/11/03 职场文书
广播节目策划方案
2014/05/23 职场文书
2015选调生工作总结
2015/07/24 职场文书
2016党员干部廉洁自律心得体会
2016/01/13 职场文书
医务人员医德医风心得体会
2016/01/25 职场文书
Flask搭建一个API服务器的步骤
2021/05/28 Python