2012-06-23 3 views
2

Что-то, что я хотел узнать уже довольно давно, но не смог понять.Вращение с перемещением мыши

http://jsfiddle.net/Mobilpadde/Xt7ag/

Затем вы переместите мышь, то, что это легкая часть, но я хочу, чтобы повернуть тоже, как и всегда смотреть в сторону мыши, но не настолько статична, больше похоже, если вы перемещаете мышь вверх, она должна сначала вращаться, а затем вы перемещаете мышь дальше, она должна снова начать следовать (если вы знаете, что я имею в виду).

Это что-то простое, или 3k строк? (Или, может быть, плагин jQuery?)

+0

вращения может быть достигнуто только с помощью CSS или графического элемента. Только JavaScript не может этого сделать. – j08691

+0

@ j08691 Я знаю, это как раз то, как вы это делаете ... – Mobilpadde

+0

Если вы знаете, тогда вы должны соответствующим образом пометить свой вопрос. – j08691

ответ

6

Хийя Я получил это что-то более близкое, используя старый пост шахты: демоhttp://jsfiddle.net/Z3pGQ/3/

Я до сих пор работаю, будет Флик вам более плавной версия или, если вы можете улучшить до меня :

Старого сообщение: Rotating an element based on cursor position in a separate element

Надеется, что это помогает, я пытаюсь сделать ее более гладкой сейчас, ура

Пример кода

$(document).ready(function() { 
    $(document).mousemove(function(e) { 
     $(".firefly").css({ 
      "top": (e.pageY * 2) + "px", 
      "left": (e.pageX * 2 + 130) + "px" 
     }); 
    }) 
}) 
var img = $(".firefly"); 
if (img.length > 0) { 
    var offset = img.offset(); 

    function mouse(evt) { 
     var center_x = (offset.left) + (img.width()/2); 
     var center_y = (offset.top) + (img.height()/2); 
     var mouse_x = evt.pageX; 
     var mouse_y = evt.pageY; 
     var radians = Math.atan2(mouse_x - center_x, mouse_y - center_y); 
     var degree = (radians * (180/Math.PI) * -1) + 90; 
     img.css('-moz-transform', 'rotate(' + degree + 'deg)'); 
     img.css('-webkit-transform', 'rotate(' + degree + 'deg)'); 
     img.css('-o-transform', 'rotate(' + degree + 'deg)'); 
     img.css('-ms-transform', 'rotate(' + degree + 'deg)'); 
    } 
    $(document).mousemove(mouse); 
}​ 

Изображение

enter image description here

+0

Uhhh, thats может быть полезно: D – Mobilpadde

+0

@Moiblpadde :) Cooleos, его вечер на моей стороне мира Я буду рисовать более плавную версию, если я закончу (** Обратите внимание **: 'вам следует поиграть с градусные переменные и оси x и y calc). Я поделился им с вами на всякий случай, когда вы можете играть и приходить с любой версией ':)' удачи, я вернусь в тик, у меня будет хороший, –

+0

Был ранний утром с моей стороны мира, то я спрашивал об этом. Но я как-то дошел до того, что мне нравится (но не полностью) http://jsfiddle.net/Mobilpadde/Yf5Eg/ – Mobilpadde

0

Это будет связано с гораздо большей математикой, чем я хочу сделать прямо сейчас, но вы можете легко применять вращения с помощью css. Вот свойства для mozilla и webkit, вы можете увидеть остальную часть (IE, Opera ...) at this page. Вот ваша функция с вращением 120deg. Вам все равно нужно будет рассчитать правильное вращение и отрегулировать соответственно left и top.

$(document).mousemove(function(e){ 
       $(".firefly").css({ 
        "top":(e.pageY*2)+"px", 
        "left":(e.pageX*2+130)+"px", 
        "-moz-transform": "rotate(120deg)", 
        "-webkit-transform": "rotate(120deg)"}); 
      }) 
+0

То, что я тоже представлял (вычисляю сверху и слева), но надеялся на что-то более простое ... D: – Mobilpadde

+0

Я не понимаю, что это значит. – Tyrsius

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