通过设置动画来更改canvas js变量

时间:2016-04-05 01:55:57

标签: javascript jquery css canvas

Jack Rugile创作的原创画布。

我正在尝试使用jquery函数在悬停时更改canvas js文件中的几个变量。几个工作,但我想通过动画来改变发光旋转的半径,而不是让它立即改变。与this扩展的方式类似。

我尝试使用$ timeout但我不认为这是正确的方法。 有什么建议吗?

DEMO

jquery悬停位于js的底部。

$('.containAnimation').hover(function() {
  circle.speed = 8;
  circle.thickness = 20;
  particleMax = 200;
  $timeout(function() {
    circle.radius = 150;
  }, 3000);
}, function() {
  circle.speed = 1.5;
  circle.thickness = 15;
  particleMax = 100;
  $timeout(function() {
    circle.radius = 100;
  }, 3000);
});

1 个答案:

答案 0 :(得分:2)

试试这个。使用requestAnimationFrame通过递归调用函数进行动画处理。

$('.containAnimation').hover(function() {
  circle.speed = 8;
  circle.thickness = 20;
  particleMax = 200;
  setTimeout(animateHoverIn, 10);
}, function() {
  circle.speed = 1.5;
  circle.thickness = 15;
  particleMax = 100;
  setTimeout(animateHoverOut, 10);
});

function animateHoverIn(){
    if (circle.radius>=150){
       return;
    }
    circle.radius++;
    requestAnimationFrame(animateHoverIn);
}

function animateHoverOut(){
    if (circle.radius<=100){
       return;
    }
    circle.radius--;
    requestAnimationFrame(animateHoverOut);
}