日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術(shù)文章
文章詳情頁

Javascript摸擬自由落體與上拋運動原理與實現(xiàn)方法詳解

瀏覽:165日期:2023-11-05 13:59:22

本文實例講述了Javascript摸擬自由落體與上拋運動原理與實現(xiàn)方法。分享給大家供大家參考,具體如下:

JavaScript 代碼

//**************************************** //名稱:Javascript摸擬自由落體與上拋運動! //作者:Gloot //郵箱:glootz@gmail.com // QQ:345268267 //網(wǎng)站:http://www.cnblogs.com/editor/ //操作:在頁面不同地方點幾下 //*************************************** var $ = function(el) { return document.getElementById(el); }; function LuoRun() { this.h = 0; this.s = 0; this.g = 9.8; this.isup = false; this.rh = 0; this.t = 0; this.timer = null; this.mt = 0; this.top = 0; this.left = 0; this.id = null; } LuoRun.prototype.Po = function(obj) { this.left += 0.3; obj.style.left = (this.left)+’px’; if (!this.isup) {if (this.t == 0){ this.top = obj.offsetTop; this.h = 570 - 22 - this.top; this.mt = Math.sqrt(2*this.h/(this.g*100)); //alert(mt+’ ’+isup+’ ’+t)}this.t+=0.01;if (this.t >= this.mt){ this.t = this.mt; this.rh = (1/2)*this.g*this.t*this.t*100; this.s = this.g*this.t*100; obj.style.top = (this.rh+this.top)+’px’; //t = 0; this.s = this.s-50>0 ? this.s-50 : 0; this.isup = true; this.t = 0;}else{ this.rh = (1/2)*this.g*this.t*this.t*100; this.s = this.g*this.t*100; obj.style.top = (this.rh+this.top)+’px’;} } else { //up//return;if (this.s == 0) { clearInterval(this.timer); this.id.parentNode.removeChild(this.id); return;}if (this.t == 0) { this.h = this.s*this.s/(2*this.g*100); this.mt = this.s/(this.g*100); this.top = obj.offsetTop; //alert(mt+’ ’+isup+’ ’+t)}this.t+=0.01;if (this.t>=this.mt) { this.t = this.mt; this.rh = this.s*this.t - (1/2)*this.g*this.t*this.t*100; obj.style.top = (this.top - this.rh)+’px’; this.s = 0; this.isup = false; this.t = 0;}else { this.rh = this.s*this.t - (1/2)*this.g*this.t*this.t*100; obj.style.top = (this.top - this.rh)+’px’;} } } LuoRun.prototype.Go = function(obj) { var self = this; if (obj == null)obj = $(’box’); self.timer = setInterval(function() {self.Po(obj);if (self.h<=0) { clearInterval(self.timer); self.id.parentNode.removeChild(self.id);} },10); } document.onmousedown = function(e) { e = e?e:window.event; var crtDiv = document.createElement(’div’); crtDiv.style.position = ’absolute’; crtDiv.style.left = e.clientX + ’px’; crtDiv.style.top = e.clientY + ’px’; crtDiv.style.background = ’#333’; crtDiv.style.width = ’22px’; crtDiv.style.height = ’22px’; document.body.appendChild(crtDiv); crtDiv.innerHTML = ’&nbsp;’; var C = new LuoRun(); C.left = e.clientX; C.id = crtDiv; document.onmouseup = function() {document.onmousemove = null;window.setTimeout(function() { C.Go(crtDiv); },1000); } }Css 樣式

<style type='text/css'> td,body {font-size:12px;} .css1 {width:240px;display:table;position:absolute;left:20px;top:20px;border:1px solid green;background:#CAF4BD;line-height:18px;padding:3px;} .css2 {width:900px;height:22px;border-top:1px solid #333;position:absolute;top:570px;left:60px;}</style>Body Html代碼

<body> <form id='form1'> <div class='css1'> 名稱:Javascript摸擬自由落體與上拋運動!<br /> 作者:Gloot<br /> 郵箱:glootz@gmail.com <br /> QQ:345268267 <br /> 網(wǎng)站:http://www.cnblogs.com/editor/ <br /> 操作:在頁面不同地方點幾下 </div> <div class='css2'>&nbsp;</div> </form></body>代碼說明

function JsFunc() { this.a = ''; this.b = '';}JsFunc.prototype.method = function() { var me = this; me.a = 'method';}function init() { var func = new JsFunc(); func.method();}

JsFunc 類當于一個(C#中的)類;

var func = new JsFunc();

相當于初始化了一個類,創(chuàng)建了一個對象;

this.a, this.b 相當于 類中的成員;

JsFunc.prototype.method 相當于創(chuàng)建這個類下的一個方法函數(shù);

如果這個JsFunc 多次 new 操作的話,其下 this成員,將各自的運行操作,互不影響;

所以當 對 JsFunc new 后創(chuàng)建一個新對象時,對這對象的成員或方法進行 setTimeout, setInterval 操作話,就會產(chǎn)生類似于并行操作的效果;

function LuoRun(){ this.h = 0; this.s = 0; this.g = 9.8; this.isup = false; this.rh = 0; this.t = 0; this.timer = null; this.mt = 0; this.top = 0; this.left = 0; this.id = null;}

this.s 表示速度;

this.h 表示設(shè)定的高度, 或物體上拋的最高高度;

this.isup 表示正處于上升還是下降狀態(tài);

this.rn 表示下降距當前頂?shù)奈灰疲蛏蠏伨嚯x初始速度位置的位移;

this.t 下降或上拋的時間;

this.mt 表示從某一高度落體至某一低點所用的時間,或以某一初始速度上拋至零速度所用的時間;

this.timer 表示定時器

this.top, this.left 表示物體相對于容器頂部及左邊的當前偏移;

this.id 表示當前創(chuàng)建方塊的對象id值;

LuoRun.prototype.Po = function(obj) {}

表示物休自由落體及上拋運動的方法;

this.left += 0.3; 表示物體每落體或上拋向左跳動的偏移量(像素);

Po 方法是在定時器 setInterval 下拋行的一個動作,每次執(zhí)行時都會根據(jù)配置偏移量以及自由落體及上拋相關(guān)公式計算當前參數(shù)值變化,并設(shè)定當前物體的位置;

obj.style.left = (this.left)+’px’; 初始化當前步驟的 左偏移;

落體狀態(tài)

if (!this.isup) {...} 表示是否是落體狀態(tài);

if (this.t == 0){ this.top = obj.offsetTop; this.h = 570 - 22 - this.top; this.mt = Math.sqrt(2*this.h/(this.g*100)); //alert(mt+’ ’+isup+’ ’+t)}

當時間為 0 時,表示當前處于落體的最頂點,記錄當前距頂部的偏移值,設(shè)定落體的高度,以及計算此高度落體所用的時間;

if (this.t >= this.mt){ this.t = this.mt; this.rh = (1/2)*this.g*this.t*this.t*100; this.s = this.g*this.t*100; obj.style.top = (this.rh+this.top)+’px’; //t = 0; this.s = this.s-50>0 ? this.s-50 : 0; this.isup = true; this.t = 0;}

當落體所用時間,大于 this.mt 的最大時間時,將時間設(shè)置為 this.mt 的落體總時間;

this.rh 根據(jù)公式 1/2gt2 得出的位移值,會等于 this.h 的值,或接近于 this.h 的高度值;

this.s 根據(jù) 速度在加速度隨時間變化的公式計算出 當前的速度,也即最大帶度,這也是初始的上拋速度;

this.s = this.s-50>0 ? this.s-50 : 0;

這個 50 即為阻尼系數(shù),即每次上拋所受阻力所減的速度值;

this.isup 設(shè)置 true; 表示進入上拋狀態(tài);

obj.style.top = (this.rh+this.top)+’px’; 設(shè)置物體本步驟落體的當前位置;

上拋運行

if (this.t == 0) { this.h = this.s*this.s/(2*this.g*100); this.mt = this.s/(this.g*100); this.top = obj.offsetTop; //alert(mt+’ ’+isup+’ ’+t)}

當時間為 0 時,表示處于上拋開始點,計算 按落體后的速度及公式: v2/(2g) 上升的最大高度 this.h; 最大上升時間 this.mt; 保存當前距頂部的偏移 this.top;

if (this.t>=this.mt) { this.t = this.mt; this.rh = this.s*this.t - (1/2)*this.g*this.t*this.t*100; obj.style.top = (this.top - this.rh)+’px’; this.s = 0; this.isup = false; this.t = 0;}

當時間 this.t 大于 this.mt 這個最大上拋時間時,將時間設(shè)置為 this.mt;

this.rh 表示上拋的高度; 公式: vt - (1/2)gt2 ;

重置 this.t及this.s 時間與速度,并將 this.isup 置為 false,開始落體動作;

LuoRun.prototype.Go = function(obj) { var self = this; if (obj == null)obj = $(’box’); self.timer = setInterval(function() {self.Po(obj);if (self.h<=0) { clearInterval(self.timer); self.id.parentNode.removeChild(self.id);} },10);}

Go 是個定時器,10 毫秒執(zhí)行一次物體偏移移動操作;

當 this.h 小于等于 0 時,清除物體,該對象方塊一個落體與上拋過程結(jié)束;

document.onmousedown = function(e) { e = e?e:window.event; var crtDiv = document.createElement(’div’); crtDiv.style.position = ’absolute’; crtDiv.style.left = e.clientX + ’px’; crtDiv.style.top = e.clientY + ’px’; crtDiv.style.background = ’#333’; crtDiv.style.width = ’22px’; crtDiv.style.height = ’22px’; document.body.appendChild(crtDiv); crtDiv.innerHTML = ’&nbsp;’; var C = new LuoRun(); C.left = e.clientX; C.id = crtDiv; document.onmouseup = function() {document.onmousemove = null;window.setTimeout(function() { C.Go(crtDiv); },1000); } }

當鼠標點擊頁面時,就創(chuàng)建一個灰黑底,寬高 22 像素的方塊;

并初始化 (創(chuàng)建新對象) LuoRun 類;

當鼠標松開后,過一秒鐘執(zhí)行 LuoRun的 Go 定時器,開始表現(xiàn)物體的落體與上拋過程;

感興趣的朋友可以使用在線HTML/CSS/JavaScript代碼運行工具:http://tools.jb51.net/code/HtmlJsRun測試上述代碼運行效果。

更多關(guān)于JavaScript相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《JavaScript運動效果與技巧匯總》、《JavaScript切換特效與技巧總結(jié)》、《JavaScript查找算法技巧總結(jié)》、《JavaScript動畫特效與技巧匯總》、《JavaScript錯誤與調(diào)試技巧總結(jié)》、《JavaScript數(shù)據(jù)結(jié)構(gòu)與算法技巧總結(jié)》、《JavaScript遍歷算法與技巧總結(jié)》及《JavaScript數(shù)學運算用法總結(jié)》

希望本文所述對大家JavaScript程序設(shè)計有所幫助。

標簽: JavaScript
相關(guān)文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
91久久久久| 日本久久黄色| 国产精品二区不卡| 国产精品亚洲一区二区在线观看 | 欧美日韩水蜜桃| 日韩精品诱惑一区?区三区| 精品午夜av| 免费视频一区二区三区在线观看| 日韩av电影一区| 亚洲乱码久久| 日韩av成人高清| 麻豆视频久久| 久久99国产精品视频| 国产乱码精品一区二区三区亚洲人 | 亚洲婷婷免费| 欧美特黄一区| 免费精品视频| 日韩av一区二区三区| 免费一区二区三区在线视频| 美女av在线免费看| 久久亚洲色图| 国产激情久久| 三级小说欧洲区亚洲区| 悠悠资源网久久精品| 鲁大师影院一区二区三区| 国产欧美自拍一区| 91亚洲国产成人久久精品| 久久国产成人午夜av影院宅| 亚洲一区免费| 国产欧美88| 99在线精品免费视频九九视| 国产精品自拍区| 欧美成人综合| 麻豆成人在线观看| 欧美日韩黑人| 麻豆中文一区二区| 在线观看亚洲精品福利片| 国产中文字幕一区二区三区| 亚洲午夜国产成人| 国产精成人品2018| 91久久亚洲| 红杏一区二区三区| 亚洲精品在线二区| 1024精品一区二区三区| 欧美日本三区| 欧美日韩国产高清| 久久gogo国模啪啪裸体| 中文字幕亚洲在线观看| 成人羞羞在线观看网站| 国产精品亚洲人成在99www| 最新亚洲一区| 一区二区三区视频免费观看| 精品理论电影在线| 亚洲精品伦理| 国产一区二区三区免费在线| 亚洲字幕久久| 在线视频亚洲| 欧美.日韩.国产.一区.二区| 久久久久久自在自线| 色乱码一区二区三区网站| 国产乱码精品一区二区三区四区 | 成人自拍av| 精品三级av在线导航| 日韩成人a**站| 日韩高清不卡在线| 免费在线欧美黄色| 欧美~级网站不卡| 欧美日韩xxxx| 久久精品资源| 国产一二在线播放| 香蕉久久久久久久av网站| 亚洲精品乱码| 国产毛片一区二区三区| 日本三级亚洲精品| 国产日韩一区二区三区在线播放| 国产精品对白久久久久粗| 中文在线а√天堂| 欧美日韩在线观看视频小说| 在线精品视频一区| 精品久久精品| 影音国产精品| 日韩精品一级二级| 日韩福利视频导航| 日韩1区在线| 亚洲啊v在线免费视频| 国产在线观看www| 青青国产91久久久久久| 极品日韩av| 久久久国产精品网站| 麻豆视频观看网址久久| 青青伊人久久| 成人精品视频| 日韩亚洲国产欧美| 91亚洲无吗| 日韩精品欧美| 日韩精品91亚洲二区在线观看| 亚洲精品福利| 久久久一本精品| 中文不卡在线| 国产91在线精品| 日韩精品一卡二卡三卡四卡无卡| 国产日韩一区| 亚洲欧美日韩国产综合精品二区 | 欧美日韩黑人| 国产精品xxx在线观看| 99国产精品| 国产在线观看www| 久久香蕉精品| 久久一区精品| 亚洲精品第一| 亚洲一区二区成人| 欧美日韩国产v| 久久精品日韩欧美| 日本综合精品一区| 91久久久久| 欧美午夜精彩| 一区二区三区四区日本视频| 日韩欧美高清一区二区三区| 在线一区视频| 亚洲精品一区二区在线看| 水蜜桃久久夜色精品一区| 国产精品一区二区三区www| 欧美一区=区| 日韩一区二区中文| 国产一区二区视频在线看| 国产精品一区二区三区av麻| 日本免费在线视频不卡一不卡二| 日韩中文字幕一区二区三区| 九九综合在线| 国产二区精品| 好看的av在线不卡观看| 中文精品视频| 国产精品美女久久久浪潮软件| 99久精品视频在线观看视频| 视频小说一区二区| 99精品视频精品精品视频| 日韩三区免费| 黄页网站一区| 狠狠色狠狠色综合日日tαg| 蜜臀久久久久久久| 日韩欧美2区| 国产欧美日韩综合一区在线播放| 国产精品黄色片| av中文资源在线资源免费观看| 亚洲不卡av不卡一区二区| jiujiure精品视频播放| 日韩中文字幕一区二区三区| 欧美偷窥清纯综合图区| 精品国产精品国产偷麻豆| 久久蜜桃精品| 日韩高清成人在线| 在线手机中文字幕| 国产精品7m凸凹视频分类| 99国产精品久久久久久久成人热| 亚洲专区视频| 国产不卡精品在线| 精品中文字幕一区二区三区av| 日本99精品| 香蕉人人精品| 国产精品手机在线播放| 久久在线视频免费观看| 国产日韩三级| 日韩一区二区久久| 久久中文欧美| 亚洲一区网站| 欧美三级精品| 日韩国产精品久久久久久亚洲| 福利在线一区| 成人看片网站| 欧美日本久久| 亚洲欧美日韩国产| av资源中文在线| 日韩中出av| 欧美 日韩 国产一区二区在线视频 | 成年男女免费视频网站不卡| 午夜在线视频一区二区区别 | 久久久夜夜夜| 久久精品三级| 日韩精品成人| 亚洲网址在线观看| 不卡av一区二区| 欧美一区三区| 日韩在线精品| 欧美国产日本| 国产伦一区二区三区| 日韩福利在线观看| 中文字幕日本一区二区| 激情久久久久久久| 精品视频高潮| 国产精品成人**免费视频| 日本精品不卡| 日韩一区二区三区免费播放| 给我免费播放日韩视频| 久久97视频| 日韩在线高清| 91成人精品视频| 蜜臀av亚洲一区中文字幕| 丝袜a∨在线一区二区三区不卡| 国产亚洲激情| 亚洲丝袜啪啪|