Windjs应用

  一个异步的js类库,应用价值不大,所以代码也没在维护了。在做h5特效或者游戏动画方面有点用处。

  $await是Windjs的核心api。具体可以check 浅谈Jscex的$await语义及异步任务模型

  具体使用demo:

var A = eval(Wind.compile("async", function () {
  console.log("Start A");
  $await(Wind.Async.sleep(3000));
  console.log("Finish A");
}));

var B = eval(Wind.compile("async", function () {
    console.log("Start B");
    $await(Wind.Async.sleep(5000));
    console.log("Finish B");
}));

var C = eval(Wind.compile("async", function () {
    console.log("Start C");
    console.log("Finish C");
}));

var run = eval(Wind.compile('async', function() {
  $await(A());
  $await(B());
  $await(C());
}));

run().start();

  简单地说就是将线程挂起了。我们可以试着用Windjs画一个圆,在大部分平台上编写这样的程序并没有太大困难,只要在绘制出图形之后短暂地阻塞线程就行了。可惜,在JavaScript中我们只能“一蹴而就”,要暂停的话,只能使用setTimeout进行回调了。不过,这也正是Windjs的用武之地,用Windjs编写的代码需要“暂停”,只需要简单地调用sleep异步方法,一切都很直接。js里$await方法一定要封装在eval中。

<!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title> </title> <script src="http://files.cnblogs.com/files/zichi/wind-all-0.7.3.js"></script> <script> window.onload = function() { var canvas = document.getElementById("canvas"); var ctx = canvas.getContext("2d"); var x = 250; var y = 250; var r = 100; var frontX = x - r; var frontY = y; var drawAsync = eval(Wind.compile('async', function() { for(var i = x - r; i <= x + r; i++) { var tempY = Math.sqrt(r * r - (x - i) * (x - i)); ctx.beginPath(); ctx.lineWidth = 5; ctx.moveTo(frontX, frontY); ctx.lineTo(i, y+ tempY); $await(Wind.Async.sleep(10)); ctx.stroke(); frontX = i; frontY = y + tempY; } for(var i = x + r; i >= x - r; i--) { var tempY = Math.sqrt(r * r - (x - i) * (x - i)); ctx.beginPath(); ctx.lineWidth = 5; ctx.moveTo(frontX, frontY); ctx.lineTo(i, y - tempY); $await(Wind.Async.sleep(10)); ctx.stroke(); frontX = i; frontY = y - tempY; } })); drawAsync().start(); }; </script> </head> <body> <canvas id='canvas' width=500 height=500 > </canvas> </body> </html>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值