2014-12-17 3 views
0

Я делаю эту снежную анимацию, и я хочу уменьшить FPS наполовину на некоторых браузерах, поэтому для этого мне нужно только переместить dom в два раза. Мне нужно установить переменную после клонирования/анимации для каждой чешуи.Как инициализировать переменную перед jQuery клонирования/анимации

Я не могу установить переменную перед клонированием, потому что тогда переменная «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"); 
      } 
     }); 
+0

Можете ли вы создать предварительный просмотр своего кода, работающего на чем-то вроде [JSFiddle] (http://jsfiddle.net/)? Если мы сможем возиться с кодом, это поможет нам вам помочь. – Turnerj

ответ

1

Вы можете использовать начальную функцию обратного вызова анимации

начало

Тип: Функция (Promise анимация)

Функция для вызова, когда начинается анимация , (версия добавлена: 1.8)

или проверить параметр p функции обратного вызова шага, чтобы перехватить только первый шаг анимации.

Смежные вопросы