JS技术

JS异步编程系列一:用Jscex画圆

字号+ 作者:当耐特砖家 来源: 2014-11-16 22:20 我要评论( )

关注老赵的 jscex 很久了,jscex利用eval(str)的无限可能,从$async 到async,从不支持if else等 到支持 if else等,jscex正在不断完善和优化当中。 jscex 完全可以投入生产环境了 昨天讲完pi,今天

 关注老赵的jscex很久了,jscex利用eval(str)的无限可能,从“$async” 到“async”,从不支持if else 等 到支持 if else等·,jscex正在不断完善和优化当中。jscex完全可以投入生产环境了··

     昨天讲完pi,今天来画圆吧!

     在支持html5浏览器中执行下面代码:

XML/HTML Code复制内容到剪贴板
  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 type="text/javascript">  
  8.   
  9.     var c = document.getElementById("myCanvas");  
  10.     var ccxt = c.getContext("2d");  
  11.     var x = 150;  
  12.     var y = 150;  
  13.     var r = 100;  
  14.     cxt.moveTo(x - r, y);  
  15.     for (var i = x - r; i < x + r + 1; i++) {  
  16.         var tempY = Math.pow(r * r - (x - i) * (x - i), 1 / 2);  
  17.         cxt.lineTo(i, y + tempY);  
  18.     }  
  19.     cxt.moveTo(x - r, y);  
  20.     for (var i = x - r; i < x + r + 1; i++) {  
  21.         var tempY = Math.pow(r * r - (x - i) * (x - i), 1 / 2);  
  22.         cxt.lineTo(i, y - tempY);  
  23.     }  
  24.       cxt.stroke();  
  25.   
  26. </script>  
  27.   
  28. </body>  
  29. </html>  

在Canvas里显示如下:

但是,我们明明是在画圆,怎么没有看到画圆的过程?javascript就是这样,解释完就画完了,而不会呈现解释的过程,这也是为什么javascript不用考虑多线程问题,仅仅UI线程。那么怎么看到画圆的过程?

jscex闪亮登场!

XML/HTML Code复制内容到剪贴板
  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>  

这样就可以目睹画圆全过程!

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

 

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

相关文章
  • 在IE下JS编程应注意的内存释放问题_Javascript教程

    在IE下JS编程应注意的内存释放问题_Javascript教程

    2015-10-02 18:19

  • JS异步编程系列五:Jscex制作愤怒的小鸟

    JS异步编程系列五:Jscex制作愤怒的小鸟

    2014-11-16 22:20

  • JS异步编程系列四:Jscex+Jquery UI打造游戏力度条

    JS异步编程系列四:Jscex+Jquery UI打造游戏力度条

    2014-11-16 22:20

  • JS异步编程系列三:Jscex无创痕切入jQueryUI

    JS异步编程系列三:Jscex无创痕切入jQueryUI

    2014-11-16 22:20

网友点评