Я бы просто использовал jQuery UI для этого эффекта.
См. Эту скрипку:
http://jsfiddle.net/kEKtw/2/
С этим кодом
$(document).ready(function() {
$('#main').effect("shake", {direction:'up', times:10}, 0);
});
Примечания:
- Я изменилcss для суммирования чисел или код пользовательского интерфейса будут иметь проблемы.
- Если вы посмотрите, как jQUI реализует Shake, вы увидите, что стек «эффектов» реализован в виде массива, как я предлагаю ниже.
Позиция причины должна быть массивом:
Что вы действительно хотите сделать, так это настроить последовательность:
- двигаться вверх случайным образомсумма
- ожидание установленного времени
- перемещение назад к центру
- ожидание установленного времени
- перемещение вниз случайной величины
Однако с использованиемПозиции в качестве объекта не дают упорядочения и не позволяют повторять команды (поскольку когда-либо команда является именем свойства объекта, которое должно быть уникальным.)
Если бы это был массив, вы могли бы настроить что-то подобноеперейти в плагин:
positions: [
'U': -300,
'W' : 1000,
'C' : 0,
'W' : 1000,
'D': 300
],
Старый ответ
Код сложный, бНо ваша проблема проста.
При каждом «движении» во встряске вы меняете относительное положение вершины или низа на новое число от 1 до 300. Это означает, что предмет будет перемещаться между 1 и 300 + размер объекта.Я считаю, что вы хотите сделать это от -300 до +300.Для этого вам нужно изменить команду U
, чтобы установить значение от -300 до 0, а не от 0 до 300
В логике есть другая ошибка - она не сбрасывает окно в центр.