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 相关文章推荐
jquery validate.js表单验证的基本用法入门
May 13 Javascript
javascript实现简易计算器的代码
May 31 Javascript
Extjs表单输入框异步校验的插件实现方法
Mar 20 Javascript
javascript浏览器用户代理检测脚本实现方法
Oct 27 Javascript
javascript修改浏览器title方法 JS动态修改浏览器标题
Nov 30 Javascript
微信小程序 如何引入外部字体库iconfont的图标
Jan 31 Javascript
JS实现不用中间变量temp 实现两个变量值得交换方法
Feb 04 Javascript
AngularJS实时获取并显示密码的方法
Feb 06 Javascript
vue脚手架搭建项目的兼容性配置详解
Jul 17 Javascript
Bootstrap Paginator+PageHelper实现分页效果
Dec 29 Javascript
使用vue自定义指令开发表单验证插件validate.js
May 23 Javascript
Vue组件实现触底判断
Jun 26 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
动态生成gif格式的图像要注意?
2006/10/09 PHP
修改jquery里的dialog对话框插件为框架页(iframe) 的方法
2010/09/14 Javascript
使用Firebug对js进行断点调试的图文方法
2011/04/02 Javascript
JS左右无缝滚动(一般方法+面向对象方法)
2012/08/17 Javascript
jQuery实现类似滑动门切换效果的层切换
2013/09/23 Javascript
javascript将数字转换整数金额大写的方法
2015/01/27 Javascript
简单实现jQuery轮播效果
2017/08/18 jQuery
swiper Scrollbar滚动条组件详解
2019/09/08 Javascript
layui+SSM的数据表的增删改实例(利用弹框添加、修改)
2019/09/27 Javascript
判断JavaScript中的两个变量是否相等的操作符
2019/12/21 Javascript
微信小程序实现滑动操作代码
2020/04/23 Javascript
Javascript var变量删除原理及实现
2020/08/26 Javascript
[19:24]DOTA2客户端使用指南 一分钟快速设置轻松超神
2013/09/24 DOTA
[01:01:04]2018DOTA2亚洲邀请赛 4.5 淘汰赛 OpTic vs TNC 第一场
2018/04/06 DOTA
Python代码的打包与发布详解
2014/07/30 Python
浅谈django model postgres的json字段编码问题
2018/01/05 Python
Python实现可设置持续运行时间、线程数及时间间隔的多线程异步post请求功能
2018/01/11 Python
Python求两个圆的交点坐标或三个圆的交点坐标方法
2018/11/07 Python
对python3标准库httpclient的使用详解
2018/12/18 Python
python简单贪吃蛇开发
2019/01/28 Python
python实现机器人卡牌
2019/10/06 Python
python打印直角三角形与等腰三角形实例代码
2019/10/20 Python
浅谈python累加求和+奇偶数求和_break_continue
2020/02/25 Python
使用 django orm 写 exists 条件过滤实例
2020/05/20 Python
使用matplotlib的pyplot模块绘图的实现示例
2020/07/12 Python
浅谈Python描述数据结构之KMP篇
2020/09/06 Python
一款利用html5和css3实现的3D滚动特效的教程
2015/01/04 HTML / CSS
德国受欢迎的旅游和休闲网站:lastminute.de
2019/09/23 全球购物
华为慧通笔试题
2016/04/22 面试题
医院检讨书范文
2014/02/01 职场文书
2014年五一劳动节社区活动总结
2014/04/14 职场文书
大学新闻系求职信
2014/06/03 职场文书
创建文明城市标语
2014/06/16 职场文书
给女朋友道歉的话大全
2015/01/20 职场文书
领导离职感言
2015/08/03 职场文书
python实现调用摄像头并拍照发邮箱
2021/04/27 Python