`
star65225692
  • 浏览: 277410 次
  • 性别: Icon_minigender_1
  • 来自: 上海
文章分类
社区版块
存档分类

javascript用jscex画圆

阅读更多

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

<!DOCTYPE HTML>
<html>
<body>

<canvas id="myCanvas" width="480" height="300" style="border:1px solid #c3c3c3;">
Your browser does not support the canvas element.
</canvas>
<script type="text/javascript ">

    var c = document.getElementById("myCanvas");
    var cxt = c.getContext("2d");
    var x = 150;
    var y = 150;
    var r = 100;
    cxt.moveTo(x - r, y);
    for (var i = x - r; i < x + r + 1; i++) {
        var tempY = Math.pow(r * r - (x - i) * (x - i), 1 / 2);
        cxt.lineTo(i, y + tempY);
    }
    cxt.moveTo(x - r, y);
    for (var i = x - r; i < x + r + 1; i++) {
        var tempY = Math.pow(r * r - (x - i) * (x - i), 1 / 2);
        cxt.lineTo(i, y - tempY);
    }
      cxt.stroke();

</script>

</body>
</html>

Canvas 里显示如下:

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

jscex闪亮登场!

<!DOCTYPE HTML>
<html>
<body>
<canvas id="myCanvas" width="480" height="300" style="border:1px solid #c3c3c3;">
Your browser does not support the canvas element.
</canvas>
    <script language="javascript" type="text/javascript" src="lib/uglifyjs-parser.js"></script>
    <script language="javascript" type="text/javascript" src="src/jscex.js"></script>
    <script language="javascript" type="text/javascript" src="src/jscex.builderBase.js"></script>
    <script language="javascript" type="text/javascript" src="src/jscex.async.js"></script>
<script type="text/javascript">
    var c = document.getElementById("myCanvas");
    var cxt = c.getContext("2d");
    var x = 150;
    var y = 150;
    var r = 100;
    var drawAsync = eval(Jscex.compile("async", function () {
        cxt.moveTo(x - r, y);
        for (var i = x - r; i < x + r + 1; i++) {
            $await(Jscex.Async.sleep(10));
            var tempY = Math.pow(r * r - (x - i) * (x - i), 1 / 2);
            cxt.lineTo(i, y + tempY);
            cxt.stroke();
        }
        cxt.moveTo(x - r, y);
        for (var i = x - r; i < x + r + 1; i++) {
            $await(Jscex.Async.sleep(10));
            var tempY = Math.pow(r * r - (x - i) * (x - i), 1 / 2);
            cxt.lineTo(i, y - tempY);
            cxt.stroke();
        }
     
    }));
    drawAsync().start();
</script>

</body>
</html>

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

分享到:
评论

相关推荐

    Jscex类库源代码

    Jscex是一个JavaScript的类库,它主要设计用于在浏览器端和Node.js环境中提供一种静态类型检查和编译的功能,从而提升代码的质量和可维护性。这个类库源自2011年,当时的版本可能包含了早期对JavaScript语言特性的...

    jscex 类库下载

    以下是一个简单的Jscex示例,展示如何用其处理异步操作: ```javascript var jscex = require('jscex'); jscex(function* () { try { var data1 = yield Promise.resolve('数据1'); console.log(data1); // ...

    Jscex:回归JavaScript的异步流程控制类库.pdf

    Jscex:回归JavaScript的异步流程控制类库 Jscex是JavaScript异步流程控制类库,旨在解决JavaScript异步编程的难题。JavaScript是一门单线程语言,用户代码一旦发生阻塞则整个程序便会陷入停滞,因此它天生带有很强...

    jscex.async.js

    var drawAsync = eval&...Jscex.compile("async", function (&#41; { while (true) { that.context.drawImage(that.offCanvas, 0, 0,that.canvas.width,that.canvas.height); $await(Jscex.Async.sleep(50)); } }))

    基于Jscex +HTML5 Canvas 制作的抽奖小程序.zip

    Jscex,全称为JavaScript Expression,是一款轻量级的JavaScript编译器,它允许开发者使用类似CoffeeScript的语法来编写JavaScript代码,提高代码的可读性和可维护性。Jscex的核心功能是将这种简洁的语法转换为标准...

    jsces 包【JeffreyZhao-jscex-v0.5.0-stable-37-g99f0994】

    【jsces 包【JeffreyZhao-jscex-v0.5.0-stable-37-g99f0994】】是一款基于JavaScript的轻量级编译器和执行环境,由开发者Jeffrey Zhao精心打造。这个版本号"v0.5.0-stable-37-g99f0994"揭示了软件的稳定性和开发迭代...

    wind.js完整包

    Jscex 可能是用来增强JavaScript的表达性和可读性,特别是对于处理复杂的业务逻辑和控制流。它可能提供了类似于CoffeeScript的语法糖,使得编写Wind.js的代码更加简洁和易于理解。 在压缩包"JeffreyZhao-wind-9fc0...

    jquery-环形旋转

    3. jQuery控制:当用户触发事件(如点击按钮)时,使用`.show()`或`.hide()`方法控制列表的显示与隐藏,并通过修改`.rotate()`方法中的角度值来实现旋转效果。 ```javascript $(document).ready(function() { var ...

    HTML5实验室——Canvas世界(源码)

    HTML5实验室——Canvas世界(源码)easel.js jscex.jscexRequire.min.js JSLINQ.js processing.js Vector2.js Vector3.js

    程序员浪漫表白

    例如,他们可能用HTML5、CSS3和JavaScript构建一个动态的网页,通过动画效果和音乐来传递情感;或者利用Python、Java等编程语言写一个小程序,让接收者通过解谜来感受爱意。 表白的过程中,数据结构和算法也可能...

    nodejs开发

    - **编译工具**:使用像 Jscex 或 streamline.js 这样的工具来帮助管理和优化异步代码。 - **辅助函数库**:Async.js 和 Flow-JS 提供了一系列工具函数来简化异步编程。 - **EventProxy**:一种轻量级的事件代理...

    HTML5 canvas 实现 有底坐大风车动画

    2. **绘图API**:在canvas上作画,我们需要使用JavaScript的绘图方法,如`fillRect()`(填充矩形)、`strokeRect()`(描边矩形)、`beginPath()`(开始路径)、`moveTo()`(移动到某点)、`lineTo()`(绘制线到某点...

    ITCYC中一位同行发表的电子书,收藏下来方便下载观看

    3. 二次编译,以Jscex为代表,这种模式通过将代码转换成不同的形式(通常是通过编译)来使得异步操作以同步的方式来执行。 书中会详细讨论这三种模式,并分享作者基于实际开发需要的选择和取舍,其中消息驱动和...

    jQuery+Html5实现唯美表白动画代码.rar_HTML表白代码_jquery;html;_表白

    唯美动画效果,非常试用于表白。妈妈再也不用担心没有女朋友了

    HTML5 canvas 实现 大风车动画

    为了实现动态效果,我们需要使用JavaScript的`requestAnimationFrame()`函数,它可以安排在下一次浏览器重绘之前调用指定的函数,从而创建连续的动画效果。每次动画帧时,我们更新风车的旋转角度,并清除画布(`...

Global site tag (gtag.js) - Google Analytics