js+html5实现的自由落体运动效果代码


Posted in Javascript onJanuary 28, 2016

本文实例讲述了js+html5实现的自由落体运动效果。分享给大家供大家参考,具体如下:

运行效果截图如下:

js+html5实现的自由落体运动效果代码

具体代码如下:

<!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>
 <title>canvas自由落体</title>
 <script type="text/javascript" >
  var canvasheight = 500;
  var canvaswidth = 500;
  var g = 9.8;
  var plusV = 0.5;
  function Block(vo, x, y, width, height, g, context) {
   var _self = this;
   _self.vo = vo || 0;
   _self.x = x;
   _self.y = y;
   _self.prevX = x;
   _self.prevY = y;
   _self.g = g;
   _self.height = height;
   _self.width = width;
   _self.prevTime = new Date().getTime();
   context.fillStyle = "black";
   _self.down = function () {
    var time = (new Date().getTime() - _self.prevTime) / 200,
     y = _self.vo * time + 1 / 2 * _self.g * time * time + _self.y;
    //console.log("down:time=" + time + ":y=" + y + ":" + _self.vo);
    if (y + _self.height >= canvasheight) {
     _self.g--;
     _self.vo = _self.g * time;
     _self.prevTime = new Date().getTime();
     _self.up();
    } else {
     context.clearRect(_self.prevX, _self.prevY - 1, _self.prevX + _self.height, _self.prevY + _self.width);
     context.fillRect(_self.x, y, _self.width, _self.height);
     _self.prevX = x;
     _self.prevY = y;
     setTimeout(function () {
      _self.down();
     }, 30);
    }
   }
   _self.up = function () {
    var time = (new Date().getTime() - _self.prevTime) / 200,
     v = _self.vo - _self.g * time,
     y = canvasheight - _self.height - _self.vo * time + 1 / 2 * _self.g * time * time;
    //console.log("up:time=" + time + ":v=" + v);
    if (v <= 0) {
     _self.vo = 0;
     _self.y = y;
     _self.prevTime = new Date().getTime();
     if (y + _self.height < canvasheight) {
      _self.down();
     } else {
      return;
     }
    } else {
     context.clearRect(_self.prevX, _self.prevY - 1, _self.prevX + _self.height , _self.prevY + _self.width);
     context.fillRect(x, y, _self.width, _self.height);
     _self.prevX = x;
     _self.prevY = y;
     setTimeout(function () {
      _self.up();
     }, 30);
    }
   }
  }
  window.onload = function () {
   var canvas = document.getElementById('canvas');
   var context = canvas.getContext('2d');
   height = canvas.offsetHeight;
   var block = new Block(0, 100, 0, 20, 20, g, context);
   block.down();
  }
 </script>
</head>
<body>
<center>
<canvas id="canvas" width="500" height="500" style="background:#DDDDDD" ></canvas>
</center>
<input type="button" value="stop" onclick="stop()" />
<input type="button" value="start" onclick="start()" />
</body>
</html>

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

Javascript 相关文章推荐
Javascript实例教程(19) 使用HoTMetal(6)
Dec 23 Javascript
网页打开自动最大化的js代码
Aug 22 Javascript
Javascript中克隆一个数组的实现代码
Dec 06 Javascript
JS获取鼠标选中的文字
Aug 10 Javascript
JavaScript使用键盘输入控制实现数字验证功能
Aug 19 Javascript
jQuery插件HighCharts绘制2D饼图效果示例【附demo源码下载】
Mar 21 jQuery
微信小程序tabbar不显示解决办法
Jun 08 Javascript
js中this对象用法分析
Jan 05 Javascript
swiper 解决动态加载数据滑动失效的问题
Feb 26 Javascript
Vue使用json-server进行后端数据模拟功能
Apr 17 Javascript
jQuery 操作 HTML 元素和属性的方法
Nov 12 jQuery
基于JS实现父组件的请求服务过程解析
Oct 14 Javascript
js判断上传文件后缀名是否合法
Jan 28 #Javascript
Angular中$compile源码分析
Jan 28 #Javascript
实例讲解JS中setTimeout()的用法
Jan 28 #Javascript
jQuery+canvas实现的球体平抛及颜色动态变换效果
Jan 28 #Javascript
jQuery+canvas实现简单的球体斜抛及颜色动态变换效果
Jan 28 #Javascript
基于javascript实现动态显示当前系统时间
Jan 28 #Javascript
jQuery实现div随意拖动的实例代码(通用代码)
Jan 28 #Javascript
You might like
谈谈新手如何学习PHP
2006/12/14 PHP
Yii配置文件用法详解
2014/12/04 PHP
PHP中使用CURL获取页面title例子
2015/01/07 PHP
Codeigniter检测表单post数据的方法
2015/03/21 PHP
Zend Framework常用校验器详解
2016/12/09 PHP
PHP字符串逆序排列实现方法小结【strrev函数,二分法,循环法,递归法】
2017/01/13 PHP
关于JavaScript中原型继承中的一点思考
2012/07/25 Javascript
Jquery自定义button按钮的几种方法
2014/06/11 Javascript
JS+CSS实现可拖拽的漂亮圆角特效弹出层完整实例
2015/02/13 Javascript
javascript操作表格排序实例分析
2015/05/06 Javascript
jQuery实现标题有打字效果的焦点图代码
2015/11/16 Javascript
jquery实现具有收缩功能的垂直导航菜单
2016/02/16 Javascript
json与jsonp知识小结(推荐)
2016/08/16 Javascript
json定义及jquery操作json的方法
2016/09/29 Javascript
手机浏览器 后退按钮强制刷新页面方法总结
2016/10/09 Javascript
Webpack打包css后z-index被重新计算的解决方法
2017/06/18 Javascript
基于zepto.js实现手机相册功能
2017/07/11 Javascript
JS实现点击循环切换显示内容的方法
2017/10/19 Javascript
vue单页应用在页面刷新时保留状态数据的方法
2018/09/21 Javascript
微信 jssdk 签名错误invalid signature的解决方法
2019/01/14 Javascript
解决vue-router 切换tab标签关闭时缓存问题
2020/07/22 Javascript
详解在Python程序中使用Cookie的教程
2015/04/30 Python
Python cookbook(数据结构与算法)根据字段将记录分组操作示例
2018/03/19 Python
详解Python:面向对象编程
2019/04/10 Python
计算机二级python学习教程(2) python语言基本语法元素
2019/05/16 Python
python web框架Flask实现图形验证码及验证码的动态刷新实例
2019/10/14 Python
Python字典底层实现原理详解
2019/12/18 Python
HUGO BOSS美国官方网上商店:世界知名奢侈品牌
2017/08/04 全球购物
一名女生的自荐信
2013/12/08 职场文书
简历中自我评价范文3则
2013/12/14 职场文书
办理居住证介绍信
2014/01/15 职场文书
党员对照检查材料思想汇报
2014/09/16 职场文书
给老婆道歉的话
2015/01/20 职场文书
2015年全国保险公众宣传日活动方案
2015/05/06 职场文书
简历中的自我评价怎么写呢?
2019/04/30 职场文书
python神经网络 使用Keras构建RNN训练
2022/05/04 Python