【问题标题】:Pause when holding down key按住键时暂停
【发布时间】:2013-08-15 02:35:38
【问题描述】:

所以我在屏幕上的 objectx 处绘制了一个对象,当按下右箭头时,objecty 和递增 objectx,将对象向右移动。我遇到的问题是,如果我按住右箭头键,它会增加一次,暂停,然后重复增加。我的问题是它为什么要这样做,我怎样才能让对象在没有初始暂停的情况下流畅地移动?

$(window).keydown(function(e) {
    if(e.keyCode == 39) {
        objectx++;
    }
}

【问题讨论】:

  • 这就是键盘的工作原理。我很确定这是您操作系统上的设置。请注意,当您在文本框中键入时(按住一个键,会发生暂停)
  • 如果您正在开发某种需要跟踪许多按键按下的游戏,您可能希望将每个按键的状态存储在一个数组中,这样可以消除按键时的延迟被按住。

标签: javascript keydown


【解决方案1】:

在 key down 时创建一个增加对象的间隔,并在 keyup 时停止间隔。 (将间隔 ID 保存在某处,同时确保间隔已经存在时不要重复两次)

【讨论】:

  • @Cains 我可能会像 Michiel 所说的那样做。您描述的行为是基于操作系统的。所以你最好的选择是保持/更新按下的键onkeydown。在事件keydown 和keyup 上设置变量pressed 设置true 或false,并让timer 进行平滑动画。
【解决方案2】:

代码没有任何问题 - 自动重复键的行为取决于 O/S + 浏览器,每个用户在将键注册为重复键之前必须连续按下多长时间会有不同的设置按,以及按什么速度。此行为旨在避免错误的多次按键。

在代码方面,keyDown 事件被完美捕获,是浏览器没有触发这些事件。

【讨论】:

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