成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Jscex模擬重力場與google蘋果logo的比較

開發 前端
各種網絡游戲,不管是3D的還是第一視角的,或者橫版游戲(如冒險島),模擬一個重力場是必須的。本節與大家分享JavaScript異步編程之Jscex模擬重力場與google蘋果logo的比較。

重力場:地球重力作用的空間。在該空間中,每一點都有惟一的一個重力矢量與之相對應。

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

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

  1. <html> 
  2. <script language="javascript"> 
  3.     var h = 0v = 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. </script> 
  22. <body> 
  23.     <div id="fall" style="position: relative; right: -300px; bottom: -46px"> 
  24.        apple  
  25.     </div> 
  26. </body> 
  27. </html> 

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

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

  1. <html> 
  2. <script language="javascript"> 
  3.         function drop() {  
  4.              //自由落體  
  5.              code  here  
  6.              //撞擊地面之后  
  7.              code  here  
  8.              //蘋果摔爛  
  9.              code  here  
  10.         }  
  11.         </script> 
  12. <body> 
  13.     <div id="fall" style="position: relative; right: -300px; bottom: -46px"> 
  14.        apple  
  15.     </div> 
  16. <script language="javascript"> 
  17. drop();  
  18. </script> 
  19. </body> 
  20. </html> 

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

這個時候【jxcex】 閃亮登場!

  1. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> 
  2. <html> 
  3. <head> 
  4.     <title>Jscex Animation</title> 
  5.     <script language="javascript" type="text/javascript" src="lib/uglifyjs-parser.js"></script> 
  6.     <script language="javascript" type="text/javascript" src="src/jscex.js"></script> 
  7.     <script language="javascript" type="text/javascript" src="src/jscex.builderBase.js"></script> 
  8.     <script language="javascript" type="text/javascript" src="src/jscex.async.js"></script> 
  9.     <!--[if IE]> 
  10.     <script language="javascript" type="text/javascript" src="http://www.cnblogs.com/lib/json2.js"></script> 
  11.     <script language="javascript"> 
  12.         Jscex.config.codeGenerator = function (code) { return "false || " + code; }  
  13.     </script> 
  14.     <![endif]--> 
  15.     <script type="text/javascript"> 
  16.         var dropAsync = eval(Jscex.compile("async", function (e, startPos, speedY, duration) {  
  17.             $await(Jscex.Async.sleep(2000));  
  18.             //e.style.left = startPos.x;  
  19.             //重力加速度  
  20.             var g = 50;  
  21.             var time = 0;  
  22.             var tag = 0;  
  23.             while (time < duration) {  
  24.                 $await(Jscex.Async.sleep(25));  
  25.                 if (time < 800) {  
  26.                     //自由落體  
  27.                     timetime = time + 50;  
  28.                     speedYspeedY = speedY + g;  
  29.                     startPos.y += speedY * 0.05;  
  30.                     e.style.top = startPos.y;  
  31.                 }  
  32.                 else {  
  33.                     //撞擊地面                   
  34.                     if (speedY > 0 && tag == 0) {  
  35.                         tag = 1;  
  36.                         speedY = -speedY;  
  37.                         speedYspeedY = speedY / 3;  
  38.                     }  
  39.                     timetime = time + 50;  
  40.                     speedYspeedY = speedY + g;  
  41.                     startPos.y += speedY * 0.05;  
  42.                     e.style.top = startPos.y;  
  43.                 }  
  44.             }  
  45.         }));  
  46.         var changeImageAsync = eval(Jscex.compile("async", function () {  
  47.             document.getElementById("heart").src = "grieve.gif";  
  48.         }));  
  49.         var executeAsync = eval(Jscex.compile("async", function () {  
  50.             //自由落體并撞擊地面  
  51.             $await(dropAsync(document.getElementById("dropBox"), { x: 0, y: 20 }, 0, 1350));  
  52.             //❤碎  
  53.             $await(changeImageAsync());  
  54.         }));  
  55.         
  56.     </script> 
  57. </head> 
  58. <body> 
  59.     <div id="dropBox" style="position: absolute; top: 20;"> 
  60.         <img id="heart" src="heart.gif" alt="" /> 
  61.     </div> 
  62.     <script type="text/javascript"> 
  63.         executeAsync().start();  
  64.     </script> 
  65. </body> 
  66. </html> 

Jquery的animate可以用來制作一些動畫效果,但僅限于勻速的直線運動,或者勻速的漸變,當然你可以用下面這種費解的方式去實現變速運動,而且要通過大量的計算才能減少與真實運動的差別。

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

如果是拋物線呢?對于這種變速運動Jquery的animate真是力不從心啊!

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

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

【代碼示例下載】

***的【jxcex】 庫,請上https://github.com/JeffreyZhao/jscex 或者http://www.sndacode.com/projects/jscex/wiki下載吧····

原文:http://www.cnblogs.com/iamzhanglei/archive/2011/08/19/2145239.html

【編輯推薦】

  1. JavaScript異步編程之用Jscex畫圓
  2. 使用HTML 5和Javascript設計繪圖程序
  3. 使用Jscex改善JavaScript異步編程體驗
  4. 一個純JavaScript游戲:狙擊野鴨
  5. 16個優秀的JavaScript教程和庫推薦
責任編輯:陳貽新 來源: zhanglei的博客
相關推薦

2011-11-16 13:22:38

Jscex

2012-06-14 14:42:42

JavaScript

2012-06-14 13:55:39

JavaScript

2013-06-12 16:10:10

Google平面設計UI設計

2011-03-22 09:57:25

Chrome全新LogGoogle

2011-03-23 09:52:40

Chrome新Logo

2009-12-16 09:55:07

Google蘋果Chrome

2013-06-27 15:47:18

Motorola MoGoogle

2011-11-10 10:23:56

Jscex

2012-06-14 13:40:04

JavaScript

2012-03-07 15:06:19

Google Play

2009-06-25 09:21:13

Google Wave

2013-01-18 17:20:45

2011-06-13 10:26:59

北電Google蘋果

2010-01-29 09:11:01

Windows 8競爭對手

2016-03-08 10:40:05

谷歌ios蘋果

2011-07-27 14:10:43

javascript

2012-03-14 21:17:29

Google

2012-06-29 13:35:55

2013-03-22 09:04:11

施密特Google Now蘋果
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 久久久国产一区二区三区四区小说 | 最新中文字幕第一页视频 | 日韩在线免费 | 欧美综合久久 | 日韩精品在线一区二区 | 国产午夜精品一区二区三区嫩草 | 久久久久久久久国产成人免费 | 中文字幕在线国产 | 久久99国产精品 | 久久国产精品一区二区三区 | 欧美在线一区二区视频 | 一级片免费视频 | 亚洲视频一区二区 | 久久久入口 | 国产成人免费一区二区60岁 | 久草精品视频 | 91亚洲国产亚洲国产 | 一区二区免费视频 | 久久99精品国产 | 精品久久久久久 | 亚洲精品一区二区三区在线 | 羞羞视频网站在线观看 | 国产一级淫片a直接免费看 免费a网站 | 6080亚洲精品一区二区 | 久久久久久黄 | 欧美日韩视频在线 | 久久中文字幕一区 | 操久久| 亚洲激情在线观看 | 99久久99热这里只有精品 | 狠狠操天天干 | 99久久免费精品视频 | 99热99 | 国产精品久久久久久妇女 | 亚洲国产精品精华素 | 精品欧美一区二区精品久久久 | 手机看黄av免费网址 | 特黄小视频 | 婷婷久久综合 | 久草在线 | 亚洲va欧美va天堂v国产综合 |