微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

javascript-动画函数中的单个值

我正在尝试动画化我在HTML5中创建的形状.

myShape.drawFunc = function(){
    var context = this.getContext();
    context.beginPath();
    context.arc(480, 480, animationValue, startingPoint * Math.PI, endingPoint * Math.PI, false);
    context.lineto(480,480);
    context.closePath();
    this.fillstroke();
}

我想使用jQuery.animate将animationValue从一个值更改为另一个超时.我不确定如何实现这一目标,我还需要在动画Layer.draw()的每个步骤上运行一个函数.因为我的形状是画布形状.

有人知道如何在myShape.drawFunc中为animationValue设置动画吗?

我应该补充一点,我正在尝试在myShape.on(“ mouSEOver”,{});中创建动画.使用setInterval方法等会造成任何问题吗?

更新:

segment.on("mouSEOver",function(){
    var startingPoint = segData[index].startingPoint;
    var endingPoint = segData[index].endingPoint;
    var startingRadias = segData[index].radias;
    var maxRadias = 250;
    var updateradias = startingRadias;

    setInterval(function(){
        if(updateradias < maxRadias){
            updateradias++;
            console.log("frame : "+updateradias);
            this.drawFunc = function(){
                var context = this.getContext();
                context.beginPath();
                context.arc(480, 480, updateradias, startingPoint * Math.PI, endingPoint * Math.PI, false);
                context.lineto(480,480);
                context.closePath();
                this.fillstroke();
            }
            rawLayer.draw();
        }
    },1000/30);

});

console.log显示正在调用setInterval,但形状似乎未重绘.

解决方法:

是的,您可以使用animate()将您的animationValue从一个值更改为另一个超时值:

var drawFunc = function (animationValue) {
    var context = $("#myCanvas")[0].getContext("2d");
    context.fillStyle="#FF0000";
    context.fillRect(animationValue, animationValue, 150, 75);
}, 
    from = 0, to = 50;

// Now animate using the jQuery.animate()
$({ n: from }).animate({ n: to}, {
    duration: 1000,
    step: function(Now, fx) {
        drawFunc(Now);
    }
});

在这种情况下,我们将在1秒内从0动画到50.

这不完全是您的动画代码,但是您应该掌握它. Demo Here

有关animating variables的更多信息

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。