如何使用Gloss?按时间顺序绘制两个形状?

时间:2017-02-21 18:05:59

标签: haskell animation gloss

我有一个显示两个形状的简单窗口:

import Graphics.Gloss

circles = pictures [Translate 80 0 one, Translate (-80) 0 two]

main = display (InWindow "t" (400,400) (800,0)) white circles

one = Color red $ Circle 80
two = Color blue $ Circle 50

我是Gloss的新手,但是从我收集的内容"显示"只需在主要(即我的模块)运行后显示静态图像,这样您就无法使用"显示"正确?

我想要做的是使用这些形状运行我的程序,但不是一次显示它们,我想首先显示一个圆,然后是另一个圆形,就像某种动画一样。

到目前为止,我只能做一些静态操作,并在程序运行时立即显示两个圆圈。但我希望它们像Run the program -> (0 sec) Blank screen -> (1 sec) One of the circles is drawn -> (2 sec) the other circle is drawn -> The window now displays circles until I close it.

一样出现在彼此之后

这应该是如此简单,使用" animate"功能,但我无法弄清楚。如果有人知识,请考虑帮助!这真的会成为我的一天。

1 个答案:

答案 0 :(得分:3)

您可以使用animate根据动画时间绘制图片:

main = animate (InWindow "t" (400,400) (800,0)) white draw

draw :: Float -> Picture
draw t
   | t <= 1    = blank                                                -- in the first second
   | t <= 2    = pictures [Translate 80 0 one]                        -- between 1s and 2s
   | otherwise = pictures [Translate 80 0 one, Translate (-80) 0 two] -- afterwards