【问题标题】:Drawing canvas animation for pie on time h:m:s在时间 h:m:s 上为饼图绘制画布动画
【发布时间】:2015-03-11 09:56:49
【问题描述】:

如何在输入 H:M:S 中按设定时间绘制饼图画布? 我有fiddle,但它适用于百分比。请帮助根据设定的时间值制作动画过程。 谢谢。

        function animate(current) {
        context.clearRect(0, 0, canvas.width, canvas.height);
        context.beginPath();
        context.arc(x, y, radius, -(quart), ((circ) * current) - quart, false);
        context.stroke();
        curPerc++;
        if (curPerc < endPercent) {
            requestAnimationFrame(function () {
                animate(curPerc / 100)
            });
        }
    }

【问题讨论】:

    标签: javascript jquery canvas drawing


    【解决方案1】:

    首先你需要做的是检查你的价值观的总时间。按下开始按钮时执行此操作。

    var hours = document.getElementById("hh").value;
    var minutes = document.getElementById("mm").value;
    var seconds = document.getElementById("ss").value;
    
    var totalTime = 60*60*hours + 60*minutes + seconds;
    

    下一步是将馅饼的生长与绘图分开。现在,您正在使用 rAF,这意味着您将在浏览器准备就绪时更新您的饼图。

    var degreesPerSecond = 360/totalTime;
    var updateFrequency = 200; //milliseconds
    var curDeg = 0; //Keeping track on the currect degree
    
    function update() {
        curDeg +=  degreesPerSecond/1000*updateFrequency;
        curPerc = curDeg/360;
    }
    

    按下开始按钮时,您也会开始一个间隔。

    var myInterval = setInterval(update,updateFrequenzy);
    

    查看您的 fiddle 的此更新

    【讨论】:

    • 非常感谢!我可以请你帮忙再做两件事吗 - 暂停并恢复动画。
    • 还有最后两个问题给大家) 1、动画结束后如何提醒?我尝试向 if (curPerc jsfiddle.net/rd2d2/ktygveh4/5
    • 您将支票作为else 放入if (curPerc &lt; endPercent) 是正确的,但您需要进行一些小改动:if (curPerc &lt;= endPercent)。你的背景圈绝对没有问题。 jsfiddle.net/Niddro/ktygveh4/6
    • 谢谢!你真的帮了我。
    • 您可以建议如何针对视网膜设备优化此画布圈?
    猜你喜欢
    • 2013-05-18
    • 1970-01-01
    • 2020-05-25
    • 1970-01-01
    • 1970-01-01
    • 2019-04-12
    • 1970-01-01
    • 1970-01-01
    • 2018-01-14
    相关资源
    最近更新 更多