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])

不要依赖按住键时为您重复的键事件。在更新功能中使用key-released和时间。将key-down放入您的状态,将其设置为key-pressedtruekey-releasedfalse,然后在key-downtrue时更新您在update-state中的角色位置。

相关内容

  • 没有找到相关文章

最新更新