欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

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

本篇內(nèi)容主要講解“Javascript如何實現(xiàn)摸擬自由落體與上拋運動的原理與方法”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學(xué)習(xí)“Javascript如何實現(xiàn)摸擬自由落體與上拋運動的原理與方法”吧!

創(chuàng)新互聯(lián)"三網(wǎng)合一"的企業(yè)建站思路。企業(yè)可建設(shè)擁有電腦版、微信版、手機版的企業(yè)網(wǎng)站。實現(xiàn)跨屏營銷,產(chǎn)品發(fā)布一步更新,電腦網(wǎng)絡(luò)+移動網(wǎng)絡(luò)一網(wǎng)打盡,滿足企業(yè)的營銷需求!創(chuàng)新互聯(lián)具備承接各種類型的網(wǎng)站建設(shè)、成都網(wǎng)站建設(shè)項目的能力。經(jīng)過10余年的努力的開拓,為不同行業(yè)的企事業(yè)單位提供了優(yōu)質(zhì)的服務(wù),并獲得了客戶的一致好評。

Java的特點有哪些

Java的特點有哪些 1.Java語言作為靜態(tài)面向?qū)ο缶幊陶Z言的代表,實現(xiàn)了面向?qū)ο罄碚?,允許程序員以優(yōu)雅的思維方式進行復(fù)雜的編程。 2.Java具有簡單性、面向?qū)ο?、分布式、安全性、平臺獨立與可移植性、動態(tài)性等特點。 3.使用Java可以編寫桌面應(yīng)用程序、Web應(yīng)用程序、分布式系統(tǒng)和嵌入式系統(tǒng)應(yīng)用程序等。

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 id="line" 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 類當(dāng)于一個(C#中的)類;

var func = new JsFunc();

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

this.a, this.b 相當(dāng)于 類中的成員;

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

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

所以當(dāng) 對 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 表示下降距當(dāng)前頂?shù)奈灰?,或上拋距離初始速度位置的位移;

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

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

this.timer 表示定時器

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

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

LuoRun.prototype.Po = function(obj) {

}

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

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

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

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

落體狀態(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)
}

當(dāng)時間為 0 時,表示當(dāng)前處于落體的最頂點,記錄當(dāng)前距頂部的偏移值,設(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;
}

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

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

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

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è)置物體本步驟落體的當(dāng)前位置;

上拋運行

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)
}

當(dāng)時間為 0 時,表示處于上拋開始點,計算 按落體后的速度及公式: v2/(2g) 上升的最大高度 this.h; 最大上升時間 this.mt; 保存當(dāng)前距頂部的偏移 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;
}

當(dāng)時間 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í)行一次物體偏移移動操作;

當(dāng) 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);
      }
    }

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

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

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

到此,相信大家對“Javascript如何實現(xiàn)摸擬自由落體與上拋運動的原理與方法”有了更深的了解,不妨來實際操作一番吧!這里是創(chuàng)新互聯(lián)網(wǎng)站,更多相關(guān)內(nèi)容可以進入相關(guān)頻道進行查詢,關(guān)注我們,繼續(xù)學(xué)習(xí)!

當(dāng)前題目:Javascript如何實現(xiàn)摸擬自由落體與上拋運動的原理與方法
標(biāo)題來源:http://aaarwkj.com/article6/pdphog.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供Google、網(wǎng)站改版、全網(wǎng)營銷推廣、外貿(mào)建站、品牌網(wǎng)站制作、商城網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都seo排名網(wǎng)站優(yōu)化
人妻日韩精品综合一二三四| 日韩欧美亚洲国产一区久久精品| 在线观看免费国产b片| 亚洲女同在线免费观看| 91欧美精品综合在线| 欧美日韩综合精品无人区| 亚洲国产天堂久久综合| 神马影院在线观看午夜| 国产精品伦理一区二区三区| 日韩版色视频在线观看| 久久精品国产亚洲夜色av网站| 国产午夜在线观看免费视频| 色婷婷精品一区二区三区| 91美女黑丝免费国产视频| 亚洲av成人在线不卡| 1区2区3区精品视频| 婷婷精品国产欧美精品亚洲| 神马久久午夜免费福利| 在线青青草视频免费观看| 黑人爆操中国女孩在线观看| 亚洲精品黄色在线观看| 国产日产精品久久一区| 日韩国产欧美亚洲一区不卡| 欧美日韩台湾一区二区| av剧情在线观看免费| 欧美日韩亚洲一区视频| 99热成人精品热久久| 免费高清视频一区二区在线观看| 18禁黄网站免费视频| 在线日韩观看免费av| 国产又粗又长又大又长| 免费在线观看av大全| 国产亚洲一区二区三区成人| 国产91精品成人在线观看| 蜜臀av午夜福利在线观看| 少妇人妻精品一区二区三| 亚洲精品一区二区三区香蕉| 色日韩在线观看视频| 亚洲高清成人在线观看| 九九九热这里只有精品| 日韩av高清免费播放|