JS 비동기 프로 그래 밍 2: 자유 낙하

21386 단어 JavaScript
중력 장: 지구 중력 작용 의 공간.이 공간 에서 모든 점 은 유일한 중력 벡터 와 대응 된다.
각종 온라인 게임 은 3D 든 첫 번 째 시각 이 든 횡 판 게임 (예 를 들 어 모험 도) 이 든 중력 장 을 모 의 하 는 것 이 필수 적 이다.
구 글 의 뉴턴 탄생 을 돌 이 켜 보면 로 고 는 자유 낙하 애플 로 바 뀌 었 다.

  
  
  
  
  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.     </script> 
  56. </head> 
  57. <body> 
  58.     <div id="dropBox" style="position: absolute; top: 20;"> 
  59.         <img id="heart" src="heart.gif" alt="" /> 
  60.     </div> 
  61.     <script type="text/javascript"> 
  62.         executeAsync().start();  
  63.     </script> 
  64. </body> 
  65. </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 는 정말 힘 에 부친 다!
하면, 만약, 만약... ,너 는 많은 반전 순환 에 빠 져 죽 고 싶 을 것 이다!물론 당신 이 매우 시원 하 다 고 생각한다 면, 당신 은 이해 할 수 있 고, 다른 사람 에 게 알 리 고 싶 지 않다 면, 그것 은 또 다른 일이 다.
말 도 안 돼 - 코드 는 다른 사람 에 게 보 여 주 는 거 야.
코드 다운로드
원본 링크:http://www.cnblogs.com/iamzhanglei/archive/2011/08/19/2145239.html
[편집 추천]
  • JS 비동기 프로 그래 밍 1: JScex 로 원 그리 기
  • JS 비동기 프로 그래 밍 3: JScex 상처 없 이 jQUI
  • JS 비동기 프로 그래 밍 4: JScex + jQ 게임 강도 게이지 만 들 기
  • JS 비동기 프로 그래 밍 5: JScex 앵 그리 버드 만 들 기
  • JavaScript 가 페이지 자체 적응 을 어떻게 실현 하 는 지 보기
  • 좋은 웹페이지 즐겨찾기