400-028-6601
建站资讯

网站建设资讯

为你提供网站建设行业资讯、网站优化知识、主机域名邮箱、网站开发常见问题等。

JS异步编程一:用Jscex画圆

一.简介

创新互联建站是一家专业提供长兴企业网站建设,专注与成都做网站、网站设计、外贸营销网站建设、HTML5、小程序制作等业务。10年已为长兴众多企业、政府机构等服务。创新互联专业网络公司优惠进行中。

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

二.画圆

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

 
 
 
 
  1. > 
  2.  
  3.  
  4.  
  5. Your browser does not support the canvas element. 
  6. canvas> 
  7.  
  8.     var c = document.getElementById("myCanvas"); 
  9.     var ccxt = c.getContext("2d"); 
  10.     var x = 150; 
  11.     var y = 150; 
  12.     var r = 100; 
  13.     cxt.moveTo(x - r, y); 
  14.     for (var i = x - r; i < x + r + 1; i++) { 
  15.         var tempY = Math.pow(r * r - (x - i) * (x - i), 1 / 2); 
  16.         cxt.lineTo(i, y + tempY); 
  17.     } 
  18.     cxt.moveTo(x - r, y); 
  19.     for (var i = x - r; i < x + r + 1; i++) { 
  20.         var tempY = Math.pow(r * r - (x - i) * (x - i), 1 / 2); 
  21.         cxt.lineTo(i, y - tempY); 
  22.     } 
  23.       cxt.stroke(); 
  24. script> 
  25. body> 
  26. html> 

在Canvas里显示如下:

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

jscex闪亮登场!

 
 
 
 
  1. > 
  2.  
  3.  
  4.  
  5. Your browser does not support the canvas element. 
  6. canvas> 
  7.     script> 
  8.     script> 
  9.     script> 
  10.     script> 
  11.  
  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.     drawAsync().start(); 
  34. script> 
  35. body> 
  36. html> 

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


文章标题:JS异步编程一:用Jscex画圆
文章地址:http://www.hnjierui.cn/article/dpdhegd.html

其他资讯