自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

JavaScript異步編程之用Jscex畫圓

開發(fā) 前端
關(guān)注老趙的jscex很久了,jscex利用eval(str)的無限可能,從“$async” 到“async”,從不支持if else 等 到支持 if else等·,jscex正在不斷完善和優(yōu)化當(dāng)中。jscex完全可以投入生產(chǎn)環(huán)境了 昨天講完pi,今天來畫圓吧!

關(guān)注老趙的jscex很久了,jscex利用eval(str)的無限可能,從“$async” 到“async”,從不支持if else 等 到支持 if else等·,jscex正在不斷完善和優(yōu)化當(dāng)中。jscex完全可以投入生產(chǎn)環(huán)境了 昨天講完pi,今天來畫圓吧!

在支持html 5的瀏覽器中執(zhí)行下面代碼:

  1. <!DOCTYPE HTML> 
  2. <html> 
  3. <body> 
  4.  
  5. <canvas id="myCanvas" width="480" height="300" style="border:1px solid #c3c3c3;"> 
  6. Your browser does not support the canvas element.  
  7. </canvas> 
  8. <script type="text/javascript"> 
  9.  
  10.     var c = document.getElementById("myCanvas");  
  11.     var ccxt = c.getContext("2d");  
  12.     var x = 150;  
  13.     var y = 150;  
  14.     var r = 100;  
  15.     cxt.moveTo(x - r, y);  
  16.     for (var i = x - r; i < x + r + 1; i++) {  
  17.         var tempY = Math.pow(r * r - (x - i) * (x - i), 1 / 2);  
  18.         cxt.lineTo(i, y + tempY);  
  19.     }  
  20.     cxt.moveTo(x - r, y);  
  21.     for (var i = x - r; i < x + r + 1; i++) {  
  22.         var tempY = Math.pow(r * r - (x - i) * (x - i), 1 / 2);  
  23.         cxt.lineTo(i, y - tempY);  
  24.     }  
  25.       cxt.stroke();  
  26.  
  27. </script> 
  28.  
  29. </body> 
  30. </html> 

在Canvas里顯示如下:

 

[[49468]]

 

但是,我們明明是在畫圓,怎么沒有看到畫圓的過程?javascript就是這樣,解釋完就畫完了,而不會(huì)呈現(xiàn)解釋的過程,這也是為什么javascript不用考慮多線程問題,僅僅UI線程。那么怎么看到畫圓的過程?

jscex閃亮登場(chǎng)!

  1. <!DOCTYPE HTML> 
  2. <html> 
  3. <body> 
  4. <canvas id="myCanvas" width="480" height="300" style="border:1px solid #c3c3c3;"> 
  5. Your browser does not support the canvas element.  
  6. </canvas> 
  7.     <script language="javascript" type="text/javascript" src="lib/uglifyjs-parser.js"></script> 
  8.     <script language="javascript" type="text/javascript" src="src/jscex.js"></script> 
  9.     <script language="javascript" type="text/javascript" src="src/jscex.builderBase.js"></script> 
  10.     <script language="javascript" type="text/javascript" src="src/jscex.async.js"></script> 
  11. <script type="text/javascript"> 
  12.     var c = document.getElementById("myCanvas");  
  13.     var ccxt = c.getContext("2d");  
  14.     var x = 150;  
  15.     var y = 150;  
  16.     var r = 100;  
  17.     var drawAsync = eval(Jscex.compile("async", function () {  
  18.         cxt.moveTo(x - r, y);  
  19.         for (var i = x - r; i < x + r + 1; i++) {  
  20.             $await(Jscex.Async.sleep(10));  
  21.             var tempY = Math.pow(r * r - (x - i) * (x - i), 1 / 2);  
  22.             cxt.lineTo(i, y + tempY);  
  23.             cxt.stroke();  
  24.         }  
  25.         cxt.moveTo(x - r, y);  
  26.         for (var i = x - r; i < x + r + 1; i++) {  
  27.             $await(Jscex.Async.sleep(10));  
  28.             var tempY = Math.pow(r * r - (x - i) * (x - i), 1 / 2);  
  29.             cxt.lineTo(i, y - tempY);  
  30.             cxt.stroke();  
  31.         }  
  32.         
  33.     }));  
  34.     drawAsync().start();  
  35. </script> 
  36.  
  37. </body> 
  38. </html> 

這樣就可以目睹畫圓全過程!

Your browser does not support the canvas element.

相關(guān)js請(qǐng)上https://github.com/JeffreyZhao/jscex或者h(yuǎn)ttp://www.sndacode.com/projects/jscex/wiki下載吧····

原文:http://www.cnblogs.com/iamzhanglei/archive/2011/08/16/2140113.html

【編輯推薦】

  1. 基于Node.js、Express和Jscex開發(fā)的ToDo網(wǎng)站示例
  2. 使用Jscex改善JavaScript異步編程體驗(yàn)
  3. 使用HTML 5和Javascript設(shè)計(jì)繪圖程序
  4. 16個(gè)優(yōu)秀的JavaScript教程和庫推薦
  5. Dart VS JavaScript之JavaScript的先天殘疾

 

責(zé)任編輯:陳貽新 來源: 當(dāng)耐特博客
相關(guān)推薦

2012-06-14 13:40:04

JavaScript

2011-11-16 13:22:38

Jscex

2011-11-11 13:38:39

Jscex

2011-11-17 16:14:25

Jscex

2011-07-27 14:10:43

javascript

2016-10-21 11:04:07

JavaScript異步編程原理解析

2012-06-14 14:03:19

JavaScript

2009-07-06 14:05:50

Servlet編程Servlet顯示圖片

2012-06-14 14:42:42

JavaScript

2012-06-14 14:09:58

JavaScript

2020-10-15 13:29:57

javascript

2021-07-15 12:44:25

Shell編程進(jìn)程

2011-11-11 14:05:13

Jscex

2014-05-23 10:12:20

Javascript異步編程

2015-04-22 10:50:18

JavascriptJavascript異

2016-09-07 20:43:36

Javascript異步編程

2017-07-13 12:12:19

前端JavaScript異步編程

2012-10-29 13:25:54

JavaScriptJSjQuery

2021-06-02 09:01:19

JavaScript 前端異步編程

2011-11-11 15:47:22

JavaScript
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)