首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Clojure Quil慢键输入

Clojure Quil慢键输入
EN

Stack Overflow用户
提问于 2019-03-01 04:11:50
回答 1查看 181关注 0票数 0

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

通过轻微的移动,我的意思是按键被立即注册,并且角色移动了一点。另外,如果我继续快速地点击按键,所有的按键都会立即注册,并且角色会像你所预期的那样移动。只有当我按住键时才会出现问题。你知道这是什么原因造成的吗?如何修复?这是带有:键按下处理程序的草图。谢谢。

代码语言:javascript
复制
(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])
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-03-01 04:43:53

当按键被按下时,不要依赖于重复的按键事件。在更新函数中使用key-released和time。将key-down置于您的状态,在key-pressed中将其设置为true,在key-released中将其设置为false,然后在key-downtrue时更新update-state中的角色位置。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54933531

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档