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

时间:2017-12-07 21:26:57

标签: racket r5rs r6rs

我想在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))))

由于

1 个答案:

答案 0 :(得分:1)

你无法让计算机延迟交换本身。你能做的就是自己推迟。

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

一种简单的方法如下:

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