如何在jQuery克隆/动画之前初始化变量

时间:2014-12-17 09:37:58

标签: javascript jquery

我正在做这个雪花动画,我想在某些浏览器上将FPS降低一半,所以为此我只需要移动dom一半的时间。我需要在每个片段克隆/动画后设置一个变量。

我无法在克隆之前设置变量,因为那时“i”变量将是通用的,并且对于每个片段它将增加,它需要在片状范围内设置。

            $flake.clone().appendTo('#snowContainer').css({
                left: x,
                top: y,
                opacity: startOpacity,
                width: sizeFlake + '%',

                *** I need to initialize the "i" variable here,
                or somewhere before the loop "step" starts ***

                color: options.flakeColor
            }).stop().animate({'border-spacing': 0 },{ 
            step: function(p, fx) {

                angle += 0.01;
                xadd = (Math.sin(angle) + (sizeFlake/4) * 1.5)/speed;
                yadd = (Math.cos(angle) + (sizeFlake/2) / 2)/speed;

                x += xadd;
                y += yadd;

                *** if "i" variable here is not defined it throws an error ***

                if(i%2==0)
                {
                    var move = {top: y + "px", left: x + "px"};
                    $(fx.elem).css(move);
                }
                i++;

            }, duration: 20000, easing:"linear", complete: function (){ $(this).remove(); //console.log("flake deleted");
            }
        });

1 个答案:

答案 0 :(得分:1)

您可以使用动画的开始回调

http://api.jquery.com/animate/

  

启动

     

类型:功能(承诺动画)

     

动画开始时调用的函数。 (版本添加:1.8)

或检查步骤回调函数的p参数,仅截取动画的第一步。