JavaScript异步编程之用Jscex画圆

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

创新互联坚实的技术研发基础赢得了行业内的良好口碑,公司成立十余年来,为1000+企业提供过网站建设、软件开发、搜索引擎优化技术、互联网大数据整合营销服务,多年的技术服务成功经验、众多的客户使我们能懂得更多,做得更好。"让您的网站跑起来"是我们一直追求的目标!

在支持html 5的浏览器中执行下面代码:

 
 
 
  1.  
  2.  
  3.  
  4.  id="myCanvas" width="480" height="300" style="border:1px solid #c3c3c3;"> 
  5. Your browser does not support the canvas element.  
  6.  
  7.  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.  
  27.  
  28.  
  29.  

在Canvas里显示如下:

[[49468]]

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

jscex闪亮登场!

 
 
 
  1. > 
  2.  
  3.  
  4.  id="myCanvas" width="480" height="300" style="border:1px solid #c3c3c3;"> 
  5. Your browser does not support the canvas element.  
  6.  
  7.      language="javascript" type="text/javascript" src="lib/uglifyjs-parser.js"> 
  8.      language="javascript" type="text/javascript" src="src/jscex.js"> 
  9.      language="javascript" type="text/javascript" src="src/jscex.builderBase.js"> 
  10.      language="javascript" type="text/javascript" src="src/jscex.async.js"> 
  11.  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.  
  36.  
  37.  
  38.  

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

Your browser does not support the canvas element.

相关js请上https://github.com/JeffreyZhao/jscex或者http://www.sndacode.com/projects/jscex/wiki下载吧····

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

【编辑推荐】

  1. 基于Node.js、Express和Jscex开发的ToDo网站示例
  2. 使用Jscex改善JavaScript异步编程体验
  3. 使用HTML 5和Javascript设计绘图程序
  4. 16个优秀的JavaScript教程和库推荐
  5. Dart VS JavaScript之JavaScript的先天残疾

网站名称:JavaScript异步编程之用Jscex画圆
分享链接:http://www.shufengxianlan.com/qtweb/news44/214344.html

网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联