av激情亚洲男人的天堂国语,日韩欧美精品一中文字幕,无码av一区二区三区无码,国产又色又爽又刺激的a片,国产又色又爽又刺激的a片

JS異步編程二:自由落體

重力場:地球重力作用的空間。在該空間中,每一點(diǎn)都有惟一的一個(gè)重力矢量與之相對應(yīng)。

站在用戶的角度思考問題,與客戶深入溝通,找到欒川網(wǎng)站設(shè)計(jì)與欒川網(wǎng)站推廣的解決方案,憑借多年的經(jīng)驗(yàn),讓設(shè)計(jì)與互聯(lián)網(wǎng)技術(shù)結(jié)合,創(chuàng)造個(gè)性化、用戶體驗(yàn)好的作品,建站類型包括:成都網(wǎng)站設(shè)計(jì)、成都網(wǎng)站建設(shè)、外貿(mào)網(wǎng)站建設(shè)、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣、域名注冊、虛擬空間、企業(yè)郵箱。業(yè)務(wù)覆蓋欒川地區(qū)。

各種網(wǎng)絡(luò)游戲,不管是3D的還是***視角的,或者橫版游戲(如冒險(xiǎn)島),模擬一個(gè)重力場是必須的。

先回顧一下谷歌在牛頓誕辰,logo換成了自由落體的蘋果。

 
 
 
  1.  
  2.  
  3.     var h = 0, v = 1;  
  4.     window.setTimeout(aa, 2000);  
  5.     function aa() {  
  6.         var i = self.setInterval("bb()", 25);  
  7.     }  
  8.     function bb() {  
  9.         var f = document.getElementById('fall');  
  10.         var r = parseInt(f.style.right) + h;  
  11.         var b = parseInt(f.style.bottom) - v;  
  12.         f.style.right = r + 'px';  
  13.         f.style.bottom = b + 'px';  
  14.         if (b > -210) {  
  15.             v += 2;  
  16.         } else {  
  17.             h = (v > 9) ? v * 0.1 : 0;  
  18.             v *= (v > 9) ? -0.3 : 0;  
  19.         }  
  20.     }  
  21.  
  22.  
  23.      
  24.        apple  
  25.     
 
  •  
  •  
  • 可以看到setTimeout和setInterval!不去仔細(xì)琢磨邏輯,光從代碼語意上,是非常令人費(fèi)解的。

    在沒有口語編程之前,我非常想把代碼寫成這樣:

     
     
     
    1.  
    2.  
    3.         function drop() {  
    4.              //自由落體  
    5.              code  here  
    6.              //撞擊地面之后  
    7.              code  here  
    8.              //蘋果摔爛  
    9.              code  here  
    10.         }  
    11.          
    12.  
    13.      
    14.        apple  
    15.     
     
  •  
  • drop();  
  •  
  •  
  •  
  • 也只有這樣的代碼才能調(diào)用以后的口語編程接口!那么怎么才能寫出這樣漂亮的代碼?

    這個(gè)時(shí)候【jxcex】 閃亮登場!

     
     
     
    1.  
    2.  
    3.  
    4.     Jscex Animation 
    5.      
    6.      
    7.      
    8.      
    9.      
    10.      
    11.         var dropAsync = eval(Jscex.compile("async", function (e, startPos, speedY, duration) {  
    12.             $await(Jscex.Async.sleep(2000));  
    13.             //e.style.left = startPos.x;  
    14.             //重力加速度  
    15.             var g = 50;  
    16.             var time = 0;  
    17.             var tag = 0;  
    18.             while (time < duration) {  
    19.                 $await(Jscex.Async.sleep(25));  
    20.                 if (time < 800) {  
    21.                     //自由落體  
    22.                     timetime = time + 50;  
    23.                     speedYspeedY = speedY + g;  
    24.                     startPos.y += speedY * 0.05;  
    25.                     e.style.top = startPos.y;  
    26.                 }  
    27.                 else {  
    28.                     //撞擊地面                   
    29.                     if (speedY > 0 && tag == 0) {  
    30.                         tag = 1;  
    31.                         speedY = -speedY;  
    32.                         speedYspeedY = speedY / 3;  
    33.                     }  
    34.                     timetime = time + 50;  
    35.                     speedYspeedY = speedY + g;  
    36.                     startPos.y += speedY * 0.05;  
    37.                     e.style.top = startPos.y;  
    38.                 }  
    39.             }  
    40.         }));  
    41.         var changeImageAsync = eval(Jscex.compile("async", function () {  
    42.             document.getElementById("heart").src = "grieve.gif";  
    43.         }));  
    44.         var executeAsync = eval(Jscex.compile("async", function () {  
    45.             //自由落體并撞擊地面  
    46.             $await(dropAsync(document.getElementById("dropBox"), { x: 0, y: 20 }, 0, 1350));  
    47.             //碎  
    48.             $await(changeImageAsync());  
    49.         }));        
    50.      
    51.  
    52.  
    53.      
    54.          
    55.     
     
  •      
  •         executeAsync().start();  
  •      
  •  
  •  
  • Jquery的animate可以用來制作一些動(dòng)畫效果,但僅限于勻速的直線運(yùn)動(dòng),或者勻速的漸變,當(dāng)然你可以用下面這種費(fèi)解的方式去實(shí)現(xiàn)變速運(yùn)動(dòng),而且要通過大量的計(jì)算才能減少與真實(shí)運(yùn)動(dòng)的差別。

     
     
     
    1. var i =0 ;  
    2.         var time = 0;  
    3.         var z = 100;  
    4.         function drop() {  
    5.             if (time <7000) {  
    6.                 i += 5;  
    7.                 z -=1;  
    8.                 $(".block").animate({ top: i }, z);  
    9.                 time += 50;  
    10.                 drop();  
    11.             }  
    12.         } 

    如果是拋物線呢?對于這種變速運(yùn)動(dòng)Jquery的animate真是力不從心?。?/p>

    如果不用【jxcex】 ,你會陷入一大堆回調(diào)循環(huán)當(dāng)中,痛不欲生!當(dāng)然如果你覺得很爽,你能想明白,又不想讓別人看明白,那又是另外一回事了。

    不過話說----代碼是寫給別人看的。

    代碼下載


    文章名稱:JS異步編程二:自由落體
    網(wǎng)頁鏈接:http://uogjgqi.cn/article/djjoosh.html
    掃二維碼與項(xiàng)目經(jīng)理溝通

    我們在微信上24小時(shí)期待你的聲音

    解答本文疑問/技術(shù)咨詢/運(yùn)營咨詢/技術(shù)建議/互聯(lián)網(wǎng)交流

    其他資訊