<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12
      代碼改變世界

      javascript異步編程系列【二】----自由落體

      2011-08-19 07:49  【當(dāng)耐特】  閱讀(6454)  評(píng)論(21)    收藏  舉報(bào)

      重力場:地球重力作用的空間。在該空間中,每一點(diǎn)都有惟一的一個(gè)重力矢量與之相對(duì)應(yīng)。
      各種網(wǎng)絡(luò)游戲,不管是3D的還是第一視角的,或者橫版游戲(如冒險(xiǎn)島),模擬一個(gè)重力場是必須的。
      先回顧一下谷歌在牛頓誕辰,logo換成了自由落體的蘋果。

      <html>
      <script language="javascript">
          
      var h = 0, v = 1;
          window.setTimeout(aa, 
      2000);
          
      function aa() {
              
      var i = self.setInterval("bb()"25);
          }
          
      function bb() {
              
      var f = document.getElementById('fall');
              
      var r = parseInt(f.style.right) + h;
              
      var b = parseInt(f.style.bottom) - v;
              f.style.right 
      = r + 'px';
              f.style.bottom 
      = b + 'px';
              
      if (b > -210) {
                  v 
      += 2;
              } 
      else {
                  h 
      = (v > 9? v * 0.1 : 0;
                  v 
      *= (v > 9? -0.3 : 0;
              }
          }
      </script>
      <body>
          
      <div id="fall" style="position: relative; right: -300px; bottom: -46px">
             apple
          
      </div>
      </body>
      </html>

      可以看到setTimeout和setInterval!不去仔細(xì)琢磨邏輯,光從代碼語意上,是非常令人費(fèi)解的。

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

      <html>
      <script language="javascript">
              
      function drop() {
                   
      //自由落體
                   code  here
                   
      //撞擊地面之后
                   code  here
                   
      //蘋果摔爛
                   code  here
              }
              
      </script>
      <body>
          
      <div id="fall" style="position: relative; right: -300px; bottom: -46px">
             apple
          
      </div>
      <script language="javascript">
      drop();
      </script>
      </body>
      </html>

       也只有這樣的代碼才能調(diào)用以后的口語編程接口!那么怎么才能寫出這樣漂亮的代碼?

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

       

      <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
      <html>
      <head>
          
      <title>Jscex Animation</title>
          
      <script language="javascript" type="text/javascript" src="lib/uglifyjs-parser.js"></script>
          
      <script language="javascript" type="text/javascript" src="src/jscex.js"></script>
          
      <script language="javascript" type="text/javascript" src="src/jscex.builderBase.js"></script>
          
      <script language="javascript" type="text/javascript" src="src/jscex.async.js"></script>
          
      <!--[if IE]>
          <script language="javascript" type="text/javascript" src="http://www.rzrgm.cn/lib/json2.js"></script>
          <script language="javascript">
              Jscex.config.codeGenerator = function (code) { return "false || " + code; }
          </script>
          <![endif]
      -->
          
      <script type="text/javascript">
              
      var dropAsync = eval(Jscex.compile("async"function (e, startPos, speedY, duration) {
                  $await(Jscex.Async.sleep(
      2000));
                  
      //e.style.left = startPos.x;
                  //重力加速度
                  var g = 50;
                  
      var time = 0;
                  
      var tag = 0;
                  
      while (time < duration) {
                      $await(Jscex.Async.sleep(
      25));
                      
      if (time < 800) {
                          
      //自由落體
                          time = time + 50;
                          speedY 
      = speedY + g;
                          startPos.y 
      += speedY * 0.05;
                          e.style.top 
      = startPos.y;
                      }
                      
      else {
                          
      //撞擊地面                 
                          if (speedY > 0 && tag == 0) {
                              tag 
      = 1;
                              speedY 
      = -speedY;
                              speedY 
      = speedY / 3;
                          }
                          time 
      = time + 50;
                          speedY 
      = speedY + g;
                          startPos.y 
      += speedY * 0.05;
                          e.style.top 
      = startPos.y;
                      }
                  }
              }));
              
      var changeImageAsync = eval(Jscex.compile("async"function () {
                  document.getElementById(
      "heart").src = "grieve.gif";
              }));
              
      var executeAsync = eval(Jscex.compile("async"function () {
                  
      //自由落體并撞擊地面
                  $await(dropAsync(document.getElementById("dropBox"), { x: 0, y: 20 }, 01350));
                  
      //?碎
                  $await(changeImageAsync());
              }));
            
          
      </script>
      </head>
      <body>
          
      <div id="dropBox" style="position: absolute; top: 20;">
              
      <img id="heart" src="heart.gif" alt="" />
          
      </div>
          
      <script type="text/javascript">
              executeAsync().start();
          
      </script>
      </body>
      </html>

      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)的差別。

       var i =0 ;
              
      var time = 0;
              
      var z = 100;
              
      function drop() {
                  
      if (time <7000) {
                      i 
      += 5;
                      z 
      -=1;
                      $(
      ".block").animate({ top: i }, z);
                      time 
      += 50;
                      drop();
                  }
              }

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

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

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

       

      【代碼示例下載】:

      最新的【jxcex】 庫,請(qǐng)上https://github.com/JeffreyZhao/jscex或者http://www.sndacode.com/projects/jscex/wiki下載吧····

      主站蜘蛛池模板: 国产精品高清视亚洲精品| 日韩一区二区三区av在线| 国产精品国产片在线观看| 一级片免费网站| 亚洲高清成人av在线| 久久久久久久久久久免费精品| 精品中文人妻在线不卡| 国产在线永久视频| 国产亚洲欧洲av综合一区二区三区 | 99国产精品欧美一区二区三区| 成年视频人免费网站动漫在线| 国产麻豆一区二区精彩视频| 国产大尺度一区二区视频| av无码精品一区二区乱子| 开封县| 91精品乱码一区二区三区| 男人的天堂av社区在线| 国产成人精品av| 亚洲精中文字幕二区三区| 日韩免费无码视频一区二区三区 | 日韩精品国产二区三区| 波多野42部无码喷潮| 亚洲乱熟乱熟女一区二区| 国产午夜福利视频在线| 欧美日韩国产码高清| 国产在线中文字幕精品| 亚洲欧美日韩成人综合一区| 阿勒泰市| free性开放小少妇| 深夜国产成人福利在线观看| 日韩精品中文字幕有码| 久久精品蜜芽亚洲国产AV| 久久久这里只有精品10| 国产午夜精品福利视频| 久久午夜私人影院| 国产资源精品中文字幕| 人妻少妇偷人精品一区| 国产美女深夜福利在线一| 国语精品一区二区三区| 四虎库影成人在线播放| 日韩熟妇中文色在线视频|