2013-09-23 2 views
1

У меня есть следующий JQuery код:только запустить преобразование CSS, когда клавиша нажата - JQuery

$(document).ready(function(){ 
    var pane = $(document),   
     box = $("#hero"),    //Our character 
     w = pane.width() - box.width(), //Width 
     d = {},       //Empty object 
     angle = 0; 


     var newr = function(a, b){ 
      return (a == 37) ? angle += 0.5 : (b == 39) ? angle -= 0.5 : angle; 
     } 
     $(window).keydown(function(e) { 
      d[e.which] = true; 
     }); 
     $(window).keyup(function(e) { 
      d[e.which] = false; 
     }); 

     setInterval(function() { 
      box.css({ 
       transform: function(index,value) { return "rotate(" + newr(37, 39) + "deg)"; } 
      }); 
     }, 20); 
}); 

Моя цель состоит в том, чтобы активировать трансформацию, как только я попал либо оставил или правой клавиши со стрелками , и прекратить вращение при отпускании клавиши. Теперь он постоянно вращается.

Here is the fiddle

ответ

0

я понял это сам. Причина, по которой он не работал должным образом, состоял в том, что в функции newr(a, b) я начал с проверки, если первый параметр a == 37, что означает, что когда я назвал функцию с 37 в качестве моего первого параметра - она ​​всегда будет правдой. Вот правильная функция:

var newr = function(a, b){ 
    return (d[a]) ? angle += 0.5 : (d[b]) ? angle -= 0.5 : angle; 
} 
+0

Я как раз собирался опубликовать очень похожий образец. На самом деле это должно быть «return (d [a])? угол + = 0,5: (d [b])? угол - = 0,5: угол; для правой стрелки тоже работать :) – Harry

+0

@ Харри да конечно - глупая ошибка у меня :) –

+0

Thats Ok mate. Бывает даже у лучших из нас :) – Harry

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