Clojure Quil慢键输入

Clojure Quil慢键输入,clojure,leiningen,quil,Clojure,Leiningen,Quil,最近我学了一些Clojure。只是用Quil库做了一个简单的游戏,我可以使用箭头键四处移动,但我遇到了一个小问题(但很烦人)——当我按住箭头键时,我的角色在屏幕上移动,但在第一次轻微移动之后,会有一个延迟,直到角色再次开始移动。一旦角色再次开始移动,移动将是连续的,没有任何问题。基本上,它的感觉是,在第一次轻微移动后,被按下的键几乎有一秒钟没有被程序注册。这似乎是一个很小的问题,但它非常明显和恼人。我还想知道为什么这只是为了学习 我所说的轻微移动是指按键立即注册,角色稍微移动。此外,如果我继续快

最近我学了一些Clojure。只是用Quil库做了一个简单的游戏,我可以使用箭头键四处移动,但我遇到了一个小问题(但很烦人)——当我按住箭头键时,我的角色在屏幕上移动,但在第一次轻微移动之后,会有一个延迟,直到角色再次开始移动。一旦角色再次开始移动,移动将是连续的,没有任何问题。基本上,它的感觉是,在第一次轻微移动后,被按下的键几乎有一秒钟没有被程序注册。这似乎是一个很小的问题,但它非常明显和恼人。我还想知道为什么这只是为了学习

我所说的轻微移动是指按键立即注册,角色稍微移动。此外,如果我继续快速敲击按键,所有按下的动作都会立即注册,角色也会按照您的预期移动。只有当我按下钥匙时,问题才会出现。你知道是什么原因造成的吗?如何解决?这是带有:按键处理程序的草图。谢谢

(q/defsketch hello-quil
:title "Game"
:size [800 500]
; setup function called only once, during sketch initialization.
:setup setup
; update-state is called on each iteration before draw-state.
:update update-state
:draw draw-state
:key-pressed
(fn [state { :keys [key key-code] }]
(case key
  (:up) (if (> (state :p-left) 5) (assoc state :p-left (- (state :p-left) 15)) state)
  (:down) (if (< (state :p-left) 395) (assoc state :p-left (+ (state :p-left) 15)) state)
  state))
:features [:keep-on-top]
; This sketch uses functional-mode middleware.
; Check quil wiki for more info about middlewares and particularly
; fun-mode.
:middleware [m/fun-mode])
(q/def)
:标题“游戏”
:尺寸[800 500]
;在草图初始化期间,仅调用一次设置函数。
:设置
;在绘制状态之前,每次迭代都会调用更新状态。
:更新更新状态
:绘制绘制状态
:按键
(fn[状态{:键[键代码]}]
(大小写键)
(:向上)(如果(>(状态:p-left)5)(关联状态:p-left(-(状态:p-left)15))状态)
(:向下)(如果(<(状态:p-left)395)(关联状态:p-left(+(状态:p-left)15))状态)
(州)
:功能[:保持领先]
;此草图使用功能模式中间件。
;查看quil wiki,了解更多有关中间件的信息,尤其是
;有趣的模式。
:中间件[m/fun模式])

按下钥匙时,不要依赖钥匙事件为您重复。在更新功能中使用
键释放
和时间。将
键向下
置于您的状态,在
键按下时将其设置为
,在
键释放时将其设置为
,然后在<代码>更新状态下更新角色位置
当<代码>按键按下
为<代码>真时,不要依赖按键按下时重复的按键事件。在更新功能中使用
键释放
和时间。将
键按下
置于您的状态,在
键按下
中将其设置为
,在
键释放
中将其设置为
,然后在
键按下
时在
更新状态下更新您的字符位置