2017-02-21 4 views
-2

私はそうのような2つの形状を表示するシンプルな窓があります。Glossを使用して、時間順に2つの図形を描くにはどうすればよいですか?

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 

私は光沢に新しいですが、主な(つまり、私のモジュールは)あなたように実行されると、私は、「表示」集まる何からすると、単に静的な画像を表示します"ディスプレイ"の権利を使ってアニメーションを作成できないのですか?

私のやりたいことは、これらの図形を使ってプログラムを実行することですが、一度に両方を表示するのではなく、最初に円を1つ表示し、もう1つは他の円をアニメーションのように表示します。

これまでは、静的な処理しかできず、プログラムの実行時にすぐに両方の円を同時に表示できます。しかし、私はそれらのお互いの後に表示するようにしたい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.

これは "アニメーション"機能を使用して非常に簡単ですが、私はそれを把握することはできません。誰かが知識があれば、助けてください!それは本当に私の日を作るだろう。

答えて

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 
関連する問題