国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

JavaScript異步編程之Jscex制作憤怒的小鳥

開發 前端
Jscex真的能制作憤怒的小鳥?在我沒有接觸Jscex之前,我也不相信!但是只要解決了重力場運動和碰撞的兩大物理問題,Jscex版的憤怒小鳥,那就是囊中之物。

Jscex真的能制作憤怒的小鳥?在我沒有接觸Jscex之前,我也不相信!但是只要解決了重力場運動和碰撞的兩大物理問題,Jscex版的憤怒小鳥,那就是囊中之物。

51CTO推薦專題:JavaScript異步編程

 

angrybird

 

如果關注這個系列的話,在javascript異步編程之Jscex模擬重力場與google蘋果logo的比較中,模擬了蘋果在重力場下的自由落體運動。

那么我們可以輕松的幫它擴展一個水平方向上的速度.

  1.  <script type="text/javascript"> 
  2. function Bird(startPos, speed_X, speed_Y, element) {  
  3. this.speed_X = speed_X;  
  4. this.speed_Y = speed_Y;  
  5. this.startPos = startPos;  
  6. this.fly = function () {  
  7. flyAsync(element, startPos, speed_X, speed_Y).start();  
  8. }  
  9. }  
  10. var flyAsync = eval(Jscex.compile("async", function (e, startPos, speed_X, speed_Y) {  
  11. e.style.left = startPos.x;  
  12. e.style.top = startPos.y;  
  13. //vt=v0+at  
  14. //重力加速度  
  15. var a_y = 40;  
  16. var speed_Yspeed_YTemp = speed_Y;  
  17. var time = 0;  
  18. while (Math.abs(speed_Y) <= speed_YTemp) {  
  19. $await(Jscex.Async.sleep(50));  
  20. timetime = time + 50;  
  21. speed_Yspeed_Y = speed_Y - a_y;  
  22. startPos.y -= (speed_Y * 0.05);  
  23. e.style.top = startPos.y;  
  24. startPos.x += speed_X * 0.05;  
  25. e.style.left = startPos.x;  
  26. }  
  27. }));  
  28. function Button1_onclick() {  
  29. var bird = new Bird({ x: 0, y: 300 }, 400, 700, document.getElementById("birdDiv"));  
  30. bird.fly();  
  31. }  
  32. </script> 
  33. <input id="Button1" type="button" value="發¢射?" onclick="return Button1_onclick()" /> 
  34. <div id="birdDiv" style="left: 0px; top: 300px; position: absolute;"> 
  35. <img id="bird" src="bird.jpg" alt="" /> 
  36. </div> 

可以看得出來,有點生硬,而且位移有點偏差,比如啟始的top:1000,終止的top:1100!主要原因是在結束while (Math.abs(speed_Y) <= speed_YTemp)的之前那最后一次

循環帶來的誤差!那么就完善一下while里面的條件,讓它不執行最后一次循環。

  1. var flyAsync = eval(Jscex.compile("async", function (e, startPos, speed_X, speed_Y) {  
  2. e.style.left = startPos.x;  
  3. e.style.top = startPos.y;  
  4. //vt=v0+at  
  5. //重力加速度  
  6. var a_y = 40;  
  7. var speed_Yspeed_YTemp = speed_Y;  
  8. var time = 0;  
  9. var maxY = startPos.y  
  10. while (speed_Y > 0 ? (Math.abs(speed_Y) <= speed_YTemp) : (e.offsetTop - (speed_Y - a_y) * 0.05 <= maxY)) {  
  11. $await(Jscex.Async.sleep(50));  
  12. timetime = time + 50;  
  13. speed_Yspeed_Y = speed_Y - a_y;  
  14. startPos.y -= (speed_Y * 0.05);  
  15. e.style.top = startPos.y;  
  16. startPos.x += speed_X * 0.05;  
  17. e.style.left = startPos.x;  
  18. }  
  19. })); 

最后讓小鳥撞擊地面彈起,然后又撞擊地面彈起···一直循環下去···

  1. var flyAsync = eval(Jscex.compile("async", function (e, startPos, speed_X, speed_Y) {  
  2. e.style.left = startPos.x;  
  3. e.style.top = startPos.y;  
  4. var maxY = startPos.y;  
  5. //所用公式?:vt=v0+at  
  6. //重力加速度  
  7. var a_y = 40;  
  8. var speed_Yspeed_YTemp = speed_Y;  
  9. var time = 0;  
  10. while (true) {  
  11. $await(Jscex.Async.sleep(1));  
  12. while (speed_Y > 0 ? (Math.abs(speed_Y) <= speed_YTemp) : (e.offsetTop - (speed_Y - a_y) * 0.05 <= maxY)) {  
  13. $await(Jscex.Async.sleep(50));  
  14. timetime = time + 50;  
  15. speed_Yspeed_Y = speed_Y - a_y;  
  16. startPos.y -= (speed_Y * 0.05);  
  17. e.style.top = startPos.y;  
  18. startPos.x += speed_X * 0.05;  
  19. e.style.left = startPos.x;  
  20. }  
  21. //與地面撞擊,X軸損失一部分速度,Y軸損失一部分速度并且被彈起  
  22.  speed_Xspeed_X = speed_X / 2;  
  23. speed_Y = -speed_Y / 3;  
  24. if (speed_X < 6) break;  
  25. }  
  26. })); 

因為撞擊的過程當中,X軸損失一部分速度,Y軸損失一部分速度并且被彈起,當speed_X小于6的時候退出循環。

黃色小鳥:體型較小,重量較輕,殊效為加快,應用進步擊弱,應用掉隊擊中等。進擊木頭較強,進擊玻璃與混凝土很弱。

 

 

對,沒有錯,它就這這篇文章的主角!

需求解析:沖鋒陷陣鳥,在不點擊加快的景象下,和紅色小鳥樣,當點擊了加快按鈕,X軸標的目標速度變成本來的3倍,Y軸標的目標變成本來的3倍,

沖鋒狀況下速度不受重力影響。

原理圖:

 

 

沖鋒鳥代碼實現:

  1. <script type="text/javascript"> 
  2.         function Bird(startPos, speed_X, speed_Y, element) {  
  3.             this.speed_X = speed_X;  
  4.             this.speed_Y = speed_Y;  
  5.             this.startPos = startPos;  
  6.             this.fly = function () {  
  7.                 flyAsync(element, startPos, speed_X, speed_Y).start();  
  8.             }  
  9.         }  
  10.         var flyAsync = eval(Jscex.compile("async", function (e, startPos, speed_X, speed_Y) {  
  11.             document.getElementById("hdTag").value = 1;  
  12.             e.style.left = startPos.x;  
  13.             e.style.top = startPos.y;  
  14.             var maxY = startPos.y;  
  15.             //重?力|加ó速ù度è  
  16.             var a_y = 40;  
  17.             var speed_Yspeed_YTemp = speed_Y;  
  18.             var speed_Xspeed_XTemp = speed_X;  
  19.             var time = 0;  
  20.             var addTag = 1;  
  21.             while (true) {  
  22.                 $await(Jscex.Async.sleep(1));  
  23.                 while ((e.offsetTop - (speed_Y - a_y) * 0.05 <= maxY)) {  
  24.                     if (document.getElementById("hdTag").value == 1) {  
  25.                         $await(Jscex.Async.sleep(50));  
  26.                         timetime = time + 50;  
  27.                         speed_Yspeed_Y = speed_Y - a_y;  
  28.                         startPos.y -= (speed_Y * 0.05);  
  29.                         startPos.x += speed_X * 0.05;  
  30.                         e.style.top = startPos.y + "px";  
  31.                         e.style.left = startPos.x + "px";  
  32.                     }  
  33.                     else {  
  34.                     //沖?鋒?狀′態?  
  35.                         $await(Jscex.Async.sleep(50));  
  36.                         timetime = time + 50;  
  37.                         if (addTag == 1) {  
  38.                             addTag = 0;  
  39.                             //速ù度è翻-倍?  
  40.                             speed_Y = 3 * speed_Y;  
  41.                             speed_X = 3 * speed_X;  
  42.                         }  
  43.                         startPos.y -= (speed_Y * 0.05);  
  44.                         startPos.x += speed_X * 0.05;  
  45.                         e.style.top = startPos.y + "px";  
  46.                         e.style.left = startPos.x + "px";  
  47.                     }  
  48.                 }  
  49.                 if (addTag == 0) {  
  50.                     addTag = 1; break;  
  51.                 }  
  52.                 //與?地?面?撞2擊÷,?X軸á損e失§一?部?分?速ù度è,?Y軸á損e失§一?部?分?速ù度è并¢且ò被?彈ˉ起e  
  53.                 document.getElementById("hdTag").value = 1;  
  54.                 speed_Xspeed_X = speed_X / 2;  
  55.                 speed_Y = -speed_Y / 3;  
  56.                 if (speed_X < 6) break;  
  57.             }  
  58.         }));  
  59.           
  60.         function Button1_onclick() {  
  61.             var bird = new Bird({ x: 0, y: 500 }, 400, 700, document.getElementById("birdDiv"));           
  62.             bird.fly();  
  63.  
  64.         }  
  65.         function Button2_onclick() {  
  66.             document.getElementById("hdTag").value = 0;  
  67.         }  
  68.     </script> 
  69.     <div > 
  70.     <input id="hdTag" value="1" type="hidden" /> 
  71.      <input id="Button1" type="button" value="發¢射?" onclick="return Button1_onclick()" /> 
  72.     <input id="Button2" type="button" value="加ó速ù" onclick="return Button2_onclick()" /> 
  73.          
  74.         <div id="birdDiv" style="left: 0px; top: 500px; position: absolute; width: 20px;  
  75.             height: 30px;z-index:10;"> 
  76.             <img src="yellowbird.png" alt=""/> 
  77.         </div> 
  78.          
  79.     </div> 

最新的Jscex 庫,請上https://github.com/JeffreyZhao/jscex或者http://www.sndacode.com/projects/jscex/wiki下載吧····

代碼下載

原文:http://www.cnblogs.com/iamzhanglei/archive/2011/08/24/2151473.html

【系列文章】

  1. 什么是JavaScript異步編程
  2. JavaScript異步編程之Jscex無創痕切入jQueryUI
  3. JavaScript異步編程之用Jscex畫圓
  4. Jscex+jQuery UI打造游戲力度條
  5. Jscex模擬重力場與google蘋果logo的比較
責任編輯:陳貽新 來源: 趙磊的博客
相關推薦

2012-06-14 14:42:42

JavaScript

2011-11-10 10:23:56

Jscex

2011-11-17 16:14:25

Jscex

2011-11-11 13:38:39

Jscex

2011-07-27 14:10:43

javascript

2012-08-29 09:50:05

憤怒的小鳥免費

2011-09-06 14:26:26

2012-06-14 13:40:04

JavaScript

2012-06-14 14:03:19

JavaScript

2016-10-21 11:04:07

JavaScript異步編程原理解析

2011-05-04 10:53:46

打印機技巧

2012-12-11 15:33:52

2011-06-16 09:07:24

憤怒的小鳥NFC

2012-02-29 09:42:25

2012-03-09 17:26:07

憤怒的小鳥憤怒的小鳥太空版

2011-05-23 08:59:36

憤怒的小鳥Rovio

2012-06-14 14:09:58

JavaScript

2014-04-15 15:37:31

憤怒的小鳥信息泄露

2012-03-23 09:29:51

憤怒的小鳥:太空Windows Pho

2012-03-14 08:54:27

Flash
點贊
收藏

51CTO技術棧公眾號

国产日韩精品在线| 美女被人操视频在线观看| 日韩中出av| 色狠狠av一区二区三区香蕉蜜桃| 国产在线高清| 精品久久久一区二区| 人妻内射一区二区在线视频 | 九九热精品视频在线观看| 久久韩剧网电视剧| 日本中文字幕一区二区| 欧美一区二区大片| 天堂中文а√在线| 欧美猛男超大videosgay| 亚洲kkk444kkk在线观看| 亚洲午夜一区二区三区| 啦啦啦在线视频免费观看高清中文| 欧美国产精品中文字幕| 国产天堂在线播放| 久久一区二区视频| 999在线免费视频| 欧美精彩视频一区二区三区| 丁香啪啪综合成人亚洲 | 一本色道久久综合亚洲精品婷婷| 香蕉成人久久| 亚欧洲精品在线视频免费观看| 国产亚洲福利| 日韩av高清| 国产精品一区免费在线观看| 91社在线播放| 国产凹凸在线观看一区二区| www婷婷av久久久影片| 国产成人精品三级| av动漫免费看| 午夜亚洲成人| 国产成人亚洲精品无码h在线| 国产在线精品91| gogogo免费视频观看亚洲一| 国产精品青青在线观看爽香蕉| 青青草91久久久久久久久| 潘金莲一级淫片aaaaaa播放1| 亚洲精品久久久蜜桃| 在线观看黄色av| 精品国产乱码久久久久久牛牛| 视频在线观看入口黄最新永久免费国产| 欧美日精品一区视频| 国产一区调教| 欧美一级在线看| 亚洲三级在线观看| 中文字幕在线视频观看| 精品国产露脸精彩对白| 6080成人| 久久99久久精品国产| 成人av免费在线| 欧美成人综合在线| 日韩中文字幕第一页| 不卡视频免费播放| av网站在线免费观看| 91精品国产高清久久久久久久久| 久久视频在线| 黄色动漫在线观看| 亚洲综合日韩中文字幕v在线| 五月亚洲婷婷| 亚洲综合在线小说| 蜜臀av性久久久久蜜臀aⅴ四虎 | 欧美影院精品一区| 免费污视频在线| 欧美日韩不卡合集视频| 日韩精品诱惑一区?区三区| 久久国产精品-国产精品| www.在线成人| 狠狠v欧美ⅴ日韩v亚洲v大胸| 亚洲天堂男人天堂女人天堂| 岳的好大精品一区二区三区| 亚洲成人精品电影在线观看| 亚洲男同1069视频| 蜜桃视频在线观看免费视频| 国产精品极品在线| 国产成人小视频| 久久视频在线免费观看| 都市激情亚洲欧美| 精品久久一区二区三区蜜桃| 国产黄人亚洲片| 亚洲第一成年免费网站| 日韩在线视频播放| 在线观看不卡| 97在线观看| 亚洲欧美日韩图片| 欧美福利电影在线观看| 美女视频黄 久久| 日韩中文字幕a| 亚洲国产精品专区久久| 婷婷久久国产对白刺激五月99| 日本欧美黄色片| 91精品国产91久久综合桃花| 国产一区二区精品福利地址| 拔插拔插海外华人免费| 日韩一区二区电影| 91九色精品| 国产一伦一伦一伦| 中文字幕亚洲天堂| 蜜芽一区二区三区| 91视频在线观看| 成人性生交大片免费看视频直播| 国产亚洲va综合人人澡精品| 大桥未久在线视频| 久久久久久久久一区二区| 午夜电影网一区| 精品一区三区| 九九热精品在线播放| 伊人久久久久久久久久久| 日本欧美韩国一区三区| 岛国在线大片| 成人在线视频网| 日韩美女久久久| 久久人体av| a级免费在线观看| 亚洲精品国精品久久99热| 国产欧美日本| 国产色在线 com| 欧美视频日韩视频在线观看| 天天久久夜夜| 日韩欧美国产片| 久久久久久久一| 久久久久久一二三区| 麻豆mv在线看| 亚洲啪啪av| 日韩av最新在线| 黑人精品欧美一区二区蜜桃| 1stkiss在线漫画| 久久大香伊蕉在人线观看热2| 精品久久久一区| 日韩免费在线| 亚洲社区在线| 国产自摸综合网| 欧美日韩美女视频| 欧美日韩综合| 久操视频在线| 一区二区三区四区五区精品| 亚洲成人亚洲激情| 麻豆精品新av中文字幕| 嗯~啊~轻一点视频日本在线观看| 日本一区二区在线视频| 日韩欧美色电影| 国产综合色在线视频区| 素人啪啪色综合| 97在线观看播放| 国产精品老女人精品视频| 欧美视频中文字幕在线| 亚洲理论在线| 超碰资源在线| 最近免费中文字幕中文高清百度| 国内成人精品一区| 午夜精品一区二区三区电影天堂| 老汉色影院首页| 精品国产美女在线| 亚洲黄一区二区三区| 91超碰国产精品| 高h视频在线播放| 男人用嘴添女人下身免费视频| 97视频免费在线观看| 婷婷综合另类小说色区| 在线视频免费在线观看一区二区| segui88久久综合9999| 久久久久久久久久久99| 日本免费久久高清视频| 欧美色涩在线第一页| 狠狠网亚洲精品| 国产精品毛片av| 在线中文资源天堂| 国产原创中文在线观看 | 国产精品福利影院| 99久久夜色精品国产亚洲1000部| 成人免费看片| 精品www久久久久奶水| 国产精品嫩草影院久久久| 3d动漫精品啪啪1区2区免费| 国产精品一二三四区| 亚洲精品小区久久久久久| 激情福利在线| 欧美午夜小视频| 国产精品主播视频| 日韩成人在线视频观看| 久久蜜臀精品av| 亚洲特色特黄| 国产999精品在线观看| 亚洲私人影吧| av动漫免费观看| 国产精品爽黄69| 中文字幕久久亚洲| 色视频欧美一区二区三区| 懂色av一区二区三区免费观看| 欧美h版在线| 日本免费一区二区三区等视频| 国外av在线| 亚洲一区日韩精品| 中文字幕在线观看一区二区三区| 国产精品网站大全| 精品中文字幕在线2019| 日韩一区二区视频| 亚洲成av人片在线|