2010-08-12 4 views
1

У меня есть объект, отслеживающий мышь, используя событие onmousemove. Но я хотел бы сделать его гладким. Я уверен, что это не может быть сложно в jQuery, но я не нахожу никаких действительно хороших ресурсов.jQuery плавное отслеживание мыши

Одна из моих идей заключалась в том, чтобы просто использовать функцию анимации и вычислять смещения, к которым я хочу перейти. Затем, если мышь снова движется до завершения анимации, я бы использовал функцию остановки, чтобы остановить анимацию. Я пересчитаю свое предназначение, и я снова пойду. Это кажется немного взломанным, и я также думаю, что он будет немного отрывистым. Я уверен, что должен быть лучший способ. Есть идеи?

EDIT
Жаль, что я не сделал моя проблема очень ясно. У меня есть объект, отслеживающий мышь в реальном времени, так что он движется точно так же, как моя мышь. Проблема в том, что я хочу, чтобы она была гладкой и отсталой с эффектами ускорения, такими как Энди Лин, упомянутые ниже. Я просто немного потерял, как на самом деле реализовать это.

+0

Я не понимаю. –

+0

Что происходит сейчас, когда вы не хотите? что вы хотите быть «гладким» и что вы подразумеваете под этим? – lincolnk

ответ

1

Я боюсь, что нет лучшего способа, чем оживить. Если вы добавите функцию сглаживания, вы просто сделаете то же самое, что и анимация. Убедитесь, что вы не ставите очередь в свои анимации, или они будут выглядеть странно. Я получил хорошие результаты с этим:

var obj = $('<div style="width:50px;height:50px;background:red;position:absolute"></div>'); 

obj.appendTo(document.body); 

$(document).bind('mousemove',function(ev){ 
obj.animate({top:ev.pageY,left:ev.pageX},{queue:false,duration:200,easing:'linear'})}); 
+0

Похоже, что это будет очень близко к тому, что я ищу! – Icode4food

+0

Что вы пропустите? – Baju

+0

Единственное, что мне не хватает, это попробовать и выяснить, что не получится! – Icode4food

1

Когда вы используете onmousemove, вам не нужно, чтобы объект менял свое поведение с каждым вызовом.

например. вы можете добавить таймер, чтобы сказать, что в течение периода времени объект не будет реагировать на mousemove и будет следовать его исходному пути, а при тайм-ауте или остановке перемещения мыши двигаться в соответствии с пунктом назначения.

Кроме того, вы можете имитировать эффект ускорения и замедления с настройками анимации.

+0

Вы прямо здесь, с тем, что я ищу. Вы дали мне несколько идей, но я не совсем понимаю, как это происходит. – Icode4food

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