Ocaml,模块图形 - 排队按键

3

我正在使用Ocaml模块Graphics编写一个简单的游戏,用于绘制和交互。我遇到了这样一个问题:当我按住一个键一段时间后,Graphics.read_key()会将所有“按键”存储在内存中等待处理。释放键后,动作仍然被执行。

有没有办法从此队列中删除条目,或者更好的方法是根本不要将它们排队?

1个回答

5

这可能不是最美观的解决方案,但您可以使用 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 ;;

希望这可以帮到你。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接