如何延迟 DrRacket 中的图像交换?

How to delay an image swap in DrRacket?

我正在尝试在 DrRacket 中为我的游戏制作动画,当我按下左键时,我希望我的图像执行 运行 动画(腿打开 --> 腿闭合)。有什么办法可以延迟图像交换?计算机进行交换的速度如此之快,以至于您看不到交换的发生。 -->

(define (keyboard-function key)
  (cond ((eq? key 'left) (tekenaar 'mario-next!)
                       ((mario-adt 'move) 'left)
                       (tekenaar 'mario-next!))
      ((eq? key 'right) ((mario-adt 'move) 'right)
                        (tekenaar 'mario-next!))
      (else (void))))

谢谢

您不能真正让计算机延迟交换本身。你能做的就是自己拖延。

您可以通过保留一个每帧递增的计数器来做到这一点。当该计数器达到一定数量时,您将交换图像。这样,不是每帧交换它们,而是每 x 帧交换它们。

一个简单的方法如下:

(define counter 0)
(set! counter (modulo (+ counter 1) 50))
(if (= counter 0)
    ; start drawing the other image)