【问题标题】:Game: Keyboard Input Simultaneously (Run & Jump)游戏:同时键盘输入(奔跑和跳跃)
【发布时间】:2013-01-25 16:50:15
【问题描述】:

我正在尝试创建一个支持 jquery 的平台游戏,但我最多是个新手。我遇到的第一个问题是同时键盘输入(可以说是跑和跳)。只是想知道我做错了什么;

var tickRate = 100,
    slideB = 0,
    slideC = 0,
    oldV = 0,
    time = 0;

$('body').keydown(function(e){
    e.stopPropagation();
    if (e.keyCode == '38') { jump(); }
    if (e.keyCode == '40') { }
    if (e.keyCode == '37') { slideB += 1; run(); }
    if (e.keyCode == '39') { slideB -= 1; run(); }
    $("#Background").css('left', (slideB * 10) + 'px');
    $("#Tell").html(slideB);
});

var run = function() {
    slideC -= 1;
    if (slideC < -20) {slideC = 0;}
    $("#Sprite").html(slideC * -11);
};

var jump = function(){
    $("#Character").animate({ top: "50px" },{ duration: 1000, easing: "easeOutQuad" });
    $("#Character").animate({ top: "200px" },{ duration: 1000, easing: "easeInQuad" });
}

目前,如果我按下 Run(向右箭头),然后我跳(向上箭头),我会停止跑步,直到我再次按下 Run。

我会在某个时候需要一个向上计数器,所以也许我可以绑定一个“检查是否按下键”脚本。

任何建议都是有帮助的。谢谢。

【问题讨论】:

    标签: jquery input keycode simultaneous


    【解决方案1】:

    对于一般的想法,您可以尝试这样的事情: {您应该根据每个动画持续时间设置间隔持续时间和/或可能对每个动画使用.stop() 方法和/或使用标志}

    http://jsfiddle.net/7juFk/

    (function () {
        $('body').on('keydown keyup', function (e) {
            e.stopPropagation();
            var key = e.which,
                type = e.type;
            switch (key) {
                case 38:
                    [type == 'keydown' ? jump() : clearInterval(intervalJump)];
                    break;
                case 37:
                    [type == 'keydown' ? run() : clearInterval(intervalRun)];
                    break;
            }
        });
        var intervalRun,
        intervalJump,
        run = function () {
            console.log('running');
            clearInterval(intervalRun);
            intervalRun = setInterval(run, 0);
        },
        jump = function () {
            console.log('jumping');
            clearInterval(intervalJump);
            intervalJump = setInterval(jump, 0);
        }
    })();
    

    【讨论】:

      【解决方案2】:

      我发现我做错了什么。我的绘图函数应该是在一起的,用一个 setInterval 来重绘它。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-08-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-05-08
        相关资源
        最近更新 更多