我想製作一個haskell程序,在窗口中繪製一些形狀。當我在窗口內點擊時,形狀的顏色應該改變。Haskell,在鼠標單擊時更改繪製顏色
我想出了這一點:
testDemo points =
runGraphics $
do
w <- openWindow "Test" (480, 550)
colorRef <- newIORef Green
let
loop0 = do
color <- readIORef colorRef
e <- getWindowEvent w
case e of
Button {pt=pt, isDown=isDown}
| isDown && color == Green -> writeIORef colorRef Red
| isDown && color == Red -> writeIORef colorRef Green
_ -> return()
color <- readIORef colorRef
drawInWindow w (withColor color (polyline points))
loop0
color <- readIORef colorRef
drawInWindow w (withColor color (polyline points))
loop0
它還挺工作。 問題是,我認爲幾乎所有的時間都會觸發一個窗口事件,所以所有的事情都會被觸發,這會讓它變慢。 我怎麼能這樣做,我只有在點擊註冊時才更改圖形?
您能否提一下您使用的窗口庫的軟件包? Gtk2hs? wxHaskell?其他? – 2010-11-05 10:02:29
那麼,在代碼中它看起來像這樣:import Graphics.HGL – 2010-11-05 11:22:47