本文实例讲述了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程序设计有所帮助。
本文向大家介绍Html5 js实现手风琴效果,包括了Html5 js实现手风琴效果的使用技巧和注意事项,需要的朋友参考一下 使用H5实现横向的手风琴功能,供大家参考,具体内容如下 下载链接:H5实现手风琴 以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持呐喊教程。
本文向大家介绍JS HTML5实现拖拽移动列表效果,包括了JS HTML5实现拖拽移动列表效果的使用技巧和注意事项,需要的朋友参考一下 练习HTML5中的拖放API,实现列表拖拽移动!参考文章:JS HTML5拖拽上传图片预览 HTML5拖拽移动列表实现思路: 1.循环设置每个子项的draggable属性,以及设置拖动标记(不会多个或全部子项都移动) 2.每次进入投放区,则检测时候有拖放标记,
本文向大家介绍Vue2路由动画效果的实现代码,包括了Vue2路由动画效果的实现代码的使用技巧和注意事项,需要的朋友参考一下 这篇文章主要讲的是路由切换的时候动画效果的实现,可以根据不同的路径去改变动画的效果,以下就是源码,可供参考: 路由的api链接在这,详细的可以去看这https://router.vuejs.org/zh-cn/advanced/transitions.html 以上就是本文的
本文向大家介绍JS多物体实现缓冲运动效果示例,包括了JS多物体实现缓冲运动效果示例的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了JS多物体实现缓冲运动效果的方法。分享给大家供大家参考,具体如下: 更多关于JavaScript相关内容感兴趣的读者可查看本站专题:《JavaScript运动效果与技巧汇总》、《JavaScript切换特效与技巧总结》、《JavaScript查找算法技巧总结》、
本文向大家介绍使用canvas画一个小球自由落体的效果相关面试题,主要包含被问及使用canvas画一个小球自由落体的效果时的应答技巧和注意事项,需要的朋友参考一下
本文向大家介绍js实现缓冲运动效果的方法,包括了js实现缓冲运动效果的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了js实现缓冲运动效果的方法。分享给大家供大家参考。具体分析如下: 该实例可实现一开始速度很快,然后慢下来,直到停止的效果。 要点: 目标点减去元素的当前位置的值除以8,因为offsetleft的值是一直在变大,所以速度的值也是一直的变小 正向速度的时候向上取整,反向速度