js+html5實現(xiàn)的自由落體運動效果代碼
本文實例講述了js+html5實現(xiàn)的自由落體運動效果。分享給大家供大家參考,具體如下:
運行效果截圖如下:
具體代碼如下:
<!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>
更多關(guān)于JavaScript運動相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《JavaScript運動效果與技巧匯總》
希望本文所述對大家JavaScript程序設(shè)計有所幫助。
相關(guān)文章
js動態(tài)刪除div元素基本思路及實現(xiàn)代碼
這篇文章主要介紹了js動態(tài)刪除div元素基本思路及實現(xiàn)代碼,需要的朋友可以參考下2014-05-05擴展javascript的Date方法實現(xiàn)代碼(prototype)
長期從事C#的開發(fā),被C#影響著我的思維。C#中DateTime的操作就很方便,于是就參考它對js的Date做了擴展。2010-11-11javascript 獲取所有id中包含某關(guān)鍵字的控件的實現(xiàn)代碼
獲取某容器控件中id包含某字符串的控件id列表2010-11-11使用Taro實現(xiàn)小程序商城的購物車功能模塊的實例代碼
這篇文章主要介紹了使用Taro實現(xiàn)的小程序商城的購物車功能模塊,本文通過實例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-06-06layer.open的自適應(yīng)及居中及子頁面標(biāo)題的修改方法
今天小編就為大家分享一篇layer.open的自適應(yīng)及居中及子頁面標(biāo)題的修改方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-09-09JS實現(xiàn)動態(tài)表格的添加,修改,刪除功能(推薦)
這篇文章主要介紹了JS實現(xiàn)動態(tài)表格的添加,修改,刪除功能(推薦)的相關(guān)知識,非常不錯,具有參考借鑒價值,感興趣的朋友一起學(xué)習(xí)吧2016-06-06