我想制作一个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