2013-07-20 4 views
0

Итак, у меня очень маленький, незначительный сайт, над которым я работаю. my website Если вы нажмете на панель серого цвета внизу, она будет анимировать для меня некоторое облегчение, чтобы использовать в будущем для редактирования информации, которую я собрал на разных фотографиях, или как бы то ни было, что я решаю, что я хочу там встать.JavaScript-анимация очень багги

мой код для анимации: (отредактирован, чтобы отразить изменения)

function animateForm(startPosition,endPosition,firstKey,keyInterval) 
{ 
    if(currentKey != lastKey) 
    { 
     animationPointer =(.5 * Math.sin((currentKey * (Math.PI/totalKeys)) - (Math.PI/2))) + .5; 
     currentPosition = (animationPointer)*endPosition; 
     bottomForm.style.bottom = currentPosition + "px"; 
     currentKey=currentKey+(keyInterval*1); 
    } 
    else 
    { 
     clearInterval(int); 
     int=0; 
    } 
} 

РЕШИТЬ! Проблема заключалась в том, что я умножал «указатель анимации» (десятичный от 0 до 1, указывающий прогресс в анимации) на «конечную позицию», и если анимация была нацелена на конечную позицию «0», этот набор позиция моей формы немедленно, чтобы «скрыть» позицию, и вещи, оттуда оттуда.

То, что мне нужно было сделать, умножить указатель на максимальную высоту, которую может достичь форма, чтобы на своем спуске она могла постепенно возвращать меньшее и меньшее значение переменной «currentPosition».

+0

Есть ли причина, по которой вы не можете/не хотите использовать, например, jQuery? –

+0

Сразу: 'totalKeys' не объявляется. Поместите свой код в строгом режиме и запустите JSHint. – Ryan

+0

[JSFiddle] (http://jsfiddle.net/) - отличный способ проверить и поделиться своим JavaScript. – eebbesen

ответ

0

Вы никогда не очищаете setInterval между анимациями. Просто печатать clearInterval; ничего не делает. Вам необходимо сохранить идентификатор, который возвращается с setInterval(), а затем передать его на звонок clearInterval();.

Поскольку вы не очищаете, эти исходные интервалы все еще работают и все еще пытаются работать с одними и теми же переменными.

+0

Спасибо за ответ! Я посмотрел clearInterval() для получения дополнительной информации о том, как это работает, и я думаю, что теперь я понимаю это намного лучше. Однако внесение вышеуказанных изменений в мои js на самом деле ничего не делает для целостности анимации. Вы предполагали, что это изменение повлияет на мою проблему или это будет только примечание? – Chucksef

+0

Я думаю, что это должно исправить это, но у меня нет времени слишком глубоко вникать. В основном вам нужно убедиться, что результат возврата из 'setInterval' назначен переменной и что' clearInterval() ' передал ту же самую ценность. В обновленном коде я не могу сказать, имеет ли значение 'int' правильное значение. –

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