1

次の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);
});

私の目標は、または右の矢印キーを押すとすぐに変換を有効にし、キーを離すと回転を停止することです。今のように、常に回転しています。

ここにフィドルがあります

4

1 に答える 1

0

私は自分でそれを理解しました。正しく機能しなかった理由は、newr(a, b)関数で最初のパラメーターかどうかを確認することから始めたためです。つまり、最初のパラメーターa == 37として 37 を指定して関数を呼び出すと、常に true になります。正しい関数は次のとおりです。

var newr = function(a, b){
    return (d[a]) ? angle += 0.5 : (d[b]) ? angle -= 0.5 : angle;
 }
于 2013-09-23T16:59:37.393 に答える