JS 비동기 프로 그래 밍 2: 자유 낙하
                                            
 21386 단어  JavaScript
                    
각종 온라인 게임 은 3D 든 첫 번 째 시각 이 든 횡 판 게임 (예 를 들 어 모험 도) 이 든 중력 장 을 모 의 하 는 것 이 필수 적 이다.
구 글 의 뉴턴 탄생 을 돌 이 켜 보면 로 고 는 자유 낙하 애플 로 바 뀌 었 다.
  
  
  
  
   
   
   
   - <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 을 볼 수 있 습 니 다!논 리 를 자세히 따 지지 않 고 코드 의 의미 만 으로 는 이해 하기 어렵다.
구어 프로 그래 밍 이 없 기 전에 나 는 코드 를 이렇게 쓰 고 싶다.
  
  
  
  
   
   
   
   - <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> 
이런 코드 만 이 이후 의 구어 프로 그래 밍 인 터 페 이 스 를 호출 할 수 있 습 니 다!그러면 어떻게 해야만 이렇게 예 쁜 코드 를 쓸 수 있 습 니까?
이때 [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.cnblogs.com/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) {  
-                     //      
-                     timetime = time + 50;  
-                     speedYspeedY = speedY + g;  
-                     startPos.y += speedY * 0.05;  
-                     e.style.top = startPos.y;  
-                 }  
-                 else {  
-                     //                       
-                     if (speedY > 0 && tag == 0) {  
-                         tag = 1;  
-                         speedY = -speedY;  
-                         speedYspeedY = speedY / 3;  
-                     }  
-                     timetime = time + 50;  
-                     speedYspeedY = 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 }, 0, 1350));  
-             //❤   
-             $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 는 애니메이션 효 과 를 만 드 는 데 사용 할 수 있 지만 등 속 의 직선 운동 이나 등 속 의 그 라 데 이 션 에 국한 된다. 물론 아래 의 이해 하기 어 려 운 방식 으로 변속 운동 을 실현 할 수 있 고 대량의 계산 을 통 해 실제 운동 과 의 차 이 를 줄 일 수 있다.
  
  
  
  
   
   
   
   - 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();  
-             }  
-         } 
포물선 이 라면?이런 변속 운동 Jquery 의 animate 는 정말 힘 에 부친 다!
하면, 만약, 만약... ,너 는 많은 반전 순환 에 빠 져 죽 고 싶 을 것 이다!물론 당신 이 매우 시원 하 다 고 생각한다 면, 당신 은 이해 할 수 있 고, 다른 사람 에 게 알 리 고 싶 지 않다 면, 그것 은 또 다른 일이 다.
말 도 안 돼 - 코드 는 다른 사람 에 게 보 여 주 는 거 야.
코드 다운로드
원본 링크:http://www.cnblogs.com/iamzhanglei/archive/2011/08/19/2145239.html
[편집 추천]
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
기초 정리 - 1문자 (String) 숫자 (Number) 불린 (Boolean) null undefined 심볼 (Symbol) 큰정수 (BigInt) 따옴표로 묶어 있어야 함 Not-A-Number - 숫자 데이터 / 숫자로 표...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.