如何延迟 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)
我正在尝试在 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)