【问题标题】:Countdown animation circular - CreateJS / EaselJS / TweenJS倒计时动画循环 - CreateJS / EaselJS / TweenJS
【发布时间】:2019-06-18 16:57:56
【问题描述】:

我对 createJS 很陌生 - 我想实现倒数计时器动画:

我偶然发现了这个issue,其中有这个fiddle - 我想实现这样的目标,但我想创建一个弧形:

我尝试调整代码并更改点值,但它只给了我一个菱形而不是完美曲线。

我是否需要指出每个值来实现一个完美的圆圈,例如:

points = [{x: 50, y: 0}, {x: 51, y: 1}, {x:52, y: 2}, ...etc]

或者有没有其他方法(可能是函数或插件)来做这些事情?我在他们的 documentation 上找不到任何东西

【问题讨论】:

    标签: javascript createjs easeljs tweenjs


    【解决方案1】:

    您可能对使用 arc() 图形以及 EaselJS“命令”图形方法感兴趣:

    1) 创建一个完整的圆弧

    var s = new createjs.Shape().set({x:100,y:100});
    s.strokeCmd = s.graphics.s("red")
        .ss(10,"round")
        .arc(0,0,80,0,Math.PI*2)
    

    2) 存储最后一个“命令”

    var cmd = s.command; // This will be the arc command
    

    3) 将命令endAngle 设置为0。你也可以在arc() 方法中这样做

    cmd.endAngle = 0;
    

    4) 在您的动画中,随着时间的推移增加endAngle。在这个例子中,我将 100 归一化为半径的 100% (Math.PI*2)

    var index = 0;
    function tick(event) {
      index += 1; // Fake Percent
      cmd.endAngle = index/100 * Math.PI*2;
      stage.update(event);
    }
    

    这是一个快速的小提琴:https://jsfiddle.net/lannymcnie/pgeut9cr/

    如果您只想在固定时间段内为圆圈设置动画,您可以补间 endAngle 值。下面是一个使用 TweenJS 的示例:https://jsfiddle.net/lannymcnie/pgeut9cr/2/

    createjs.Tween.get(cmd)
        .to({endAngle:Math.PI*2}, 2000, createjs.Ease.quadInOut);
    

    干杯,

    【讨论】:

    • 不错!但是我怎样才能在这个东西上添加“持续时间”呢?
    • 您可以任意设置endAngle。我用一个使用 TweenJS 的动画示例更新了我的答案,它在 2 秒内对其进行了动画处理。
    • 谢谢,嗯,另一个问题(如果可以的话)如果不是让一个红色圆圈形成一个圆圈,是否有可能一个红色圆圈消失?比如倒数之类的? (顺便说一句,这个 edgeangle 的东西,我从来没有听说过,谢谢!)
    • endAngle 只是arc() 命令的一个属性:createjs.com/docs/easeljs/classes/Graphics.Arc.html -- 您可以将其从Math.PI*2 动画化到0 以使其消失。