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

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

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

網(wǎng)站設(shè)計、成都網(wǎng)站制作,成都做網(wǎng)站公司-創(chuàng)新互聯(lián)公司已向上千企業(yè)提供了,網(wǎng)站設(shè)計,網(wǎng)站制作,網(wǎng)絡(luò)營銷等服務(wù)!設(shè)計與技術(shù)結(jié)合,多年網(wǎng)站推廣經(jīng)驗(yàn),合理的價格為您打造企業(yè)品質(zhì)網(wǎng)站。

推薦專題:JavaScript異步編程

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

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

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

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

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

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

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

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

因?yàn)樽矒舻倪^程當(dāng)中,X軸損失一部分速度,Y軸損失一部分速度并且被彈起,當(dāng)speed_X小于6的時候退出循環(huán)。

黃色小鳥:體型較小,重量較輕,殊效為加快,應(yīng)用進(jìn)步擊弱,應(yīng)用掉隊擊中等。進(jìn)擊木頭較強(qiáng),進(jìn)擊玻璃與混凝土很弱。

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

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

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

原理圖:

沖鋒鳥代碼實(shí)現(xiàn):

 
 
 
 
  1.         function Bird(startPos, speed_X, speed_Y, element) {
  2.             this.speed_X = speed_X;
  3.             this.speed_Y = speed_Y;
  4.             this.startPos = startPos;
  5.             this.fly = function () {
  6.                 flyAsync(element, startPos, speed_X, speed_Y).start();
  7.             }
  8.         }
  9.         var flyAsync = eval(Jscex.compile("async", function (e, startPos, speed_X, speed_Y) {
  10.             document.getElementById("hdTag").value = 1;
  11.             e.style.left = startPos.x;
  12.             e.style.top = startPos.y;
  13.             var maxY = startPos.y;
  14.             //重?力|加ó速ù度è
  15.             var a_y = 40;
  16.             var speed_Yspeed_YTemp = speed_Y;
  17.             var speed_Xspeed_XTemp = speed_X;
  18.             var time = 0;
  19.             var addTag = 1;
  20.             while (true) {
  21.                 $await(Jscex.Async.sleep(1));
  22.                 while ((e.offsetTop - (speed_Y - a_y) * 0.05 <= maxY)) {
  23.                     if (document.getElementById("hdTag").value == 1) {
  24.                         $await(Jscex.Async.sleep(50));
  25.                         timetime = time + 50;
  26.                         speed_Yspeed_Y = speed_Y - a_y;
  27.                         startPos.y -= (speed_Y * 0.05);
  28.                         startPos.x += speed_X * 0.05;
  29.                         e.style.top = startPos.y + "px";
  30.                         e.style.left = startPos.x + "px";
  31.                     }
  32.                     else {
  33.                     //沖?鋒?狀′態(tài)?
  34.                         $await(Jscex.Async.sleep(50));
  35.                         timetime = time + 50;
  36.                         if (addTag == 1) {
  37.                             addTag = 0;
  38.                             //速ù度è翻-倍?
  39.                             speed_Y = 3 * speed_Y;
  40.                             speed_X = 3 * speed_X;
  41.                         }
  42.                         startPos.y -= (speed_Y * 0.05);
  43.                         startPos.x += speed_X * 0.05;
  44.                         e.style.top = startPos.y + "px";
  45.                         e.style.left = startPos.x + "px";
  46.                     }
  47.                 }
  48.                 if (addTag == 0) {
  49.                     addTag = 1; break;
  50.                 }
  51.                 //與?地?面?撞2擊÷,?X軸á損e失§一?部?分?速ù度è,?Y軸á損e失§一?部?分?速ù度è并¢且ò被?彈ˉ起e
  52.                 document.getElementById("hdTag").value = 1;
  53.                 speed_Xspeed_X = speed_X / 2;
  54.                 speed_Y = -speed_Y / 3;
  55.                 if (speed_X < 6) break;
  56.             }
  57.         }));
  58.         
  59.         function Button1_onclick() {
  60.             var bird = new Bird({ x: 0, y: 500 }, 400, 700, document.getElementById("birdDiv"));         
  61.             bird.fly();
  62.         }
  63.         function Button2_onclick() {
  64.             document.getElementById("hdTag").value = 0;
  65.         }
  66.     
  67.     
  68.     
  69.      
  70.     
  71.        
  72.         
  73.             height: 30px;z-index:10;">
  74.             
  75.         
  •        
  •     
  • 最新的Jscex 庫,請上https://github.com/JeffreyZhao/jscex或者h(yuǎn)ttp://www.sndacode.com/projects/jscex/wiki下載吧····

    代碼下載

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

    【系列文章】

    1. 什么是JavaScript異步編程
    2. JavaScript異步編程之Jscex無創(chuàng)痕切入jQueryUI
    3. JavaScript異步編程之用Jscex畫圓
    4. Jscex+jQuery UI打造游戲力度條
    5. Jscex模擬重力場與google蘋果logo的比較

    新聞標(biāo)題:JavaScript異步編程之Jscex制作憤怒的小鳥
    本文鏈接:http://uogjgqi.cn/article/dphchsc.html
    掃二維碼與項(xiàng)目經(jīng)理溝通

    我們在微信上24小時期待你的聲音

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

    其他資訊