龙盟编程博客 | 无障碍搜索 | 云盘搜索神器
快速搜索
主页 > web编程 > Javascript编程 >

JS异步编程一:用Jscex画圆

时间:2013-03-06 14:58来源:未知 作者:admin 点击:
分享到:
一.简介 关注老赵的 jscex 很久了,jscex利用eval(str)的无限可能,从$async 到async,从不支持if else等 到支持 if else等,jscex正在不断完善和优化当中。jscex完全可以投入生产环境了 二.画圆

一.简介

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

二.画圆

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

  1. > 
  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.     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. <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.     drawAsync().start(); 
  34. script> 
  35. body> 
  36. html> 

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

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

【责任编辑:张伟 TEL:(010)68476606】
精彩图集

赞助商链接