我正在使用Ocaml模块Graphics
编写一个简单的游戏,用于绘制和交互。我遇到了这样一个问题:当我按住一个键一段时间后,Graphics.read_key()
会将所有“按键”存储在内存中等待处理。释放键后,动作仍然被执行。
有没有办法从此队列中删除条目,或者更好的方法是根本不要将它们排队?
我正在使用Ocaml模块Graphics
编写一个简单的游戏,用于绘制和交互。我遇到了这样一个问题:当我按住一个键一段时间后,Graphics.read_key()
会将所有“按键”存储在内存中等待处理。释放键后,动作仍然被执行。
有没有办法从此队列中删除条目,或者更好的方法是根本不要将它们排队?
这可能不是最美观的解决方案,但您可以使用 key_pressed
函数。该函数将在按键按下时返回 true。因此,一旦您使用 read_key
读取了一个按键,您可以通过调用 read_key
直到 key_pressed
为 false 并忽略结果来刷新队列。
(* flush_kp : unit -> unit *)
let flush_kp () = while key_pressed () do
let c = read_key ()
in ()
done ;;