Mac上的Haskell Gloss中的鼠标处理程序

时间:2018-10-17 07:19:13

标签: haskell gloss

我对问题是错的。事件处理程序工作正常,现在一切正常。我在http://gloss.ouroborus.net/上找到了答案,下面引用了相关段落。对于您提出的误导性问题,我深表歉意。我会删除问题,但没有找到解决方法。

来自gloss.ouroborus.net:

问:在OSX下的MacBook Pro上,光泽程序在显示前几帧后冻结。 答:在双GPU系统上,当操作系统从集成GPU(烘焙到处理器)切换到离散GPU(与主处理器分离)时,可能会发生这种情况。光泽度程序有时会在卡住之前画几帧,否则它只会显示一个黑色窗口。这可能是OSX中的错误,无法正确切换图形上下文。解决方法是在“系统偏好设置” /“节能器”下禁用自动GPU切换。

原始问题:

我用Haskell Gloss编写了一个游戏,该游戏使用鼠标单击和键盘处理程序。它可以在PC上编译并正常运行,但是在Apple上编译并加载并显示游戏屏幕时,鼠标和键盘处理程序会出现故障。鼠标处理程序识别出已单击了鼠标按钮,但是无论鼠标在哪里,都报告鼠标位置的同一对数字。键盘处理程序不适用于“ s”和“ f”,但是转义键可以工作。

以下是处理程序:

mousehandle::Event->(Board,Board)->IO(Board,Board)
mousehandle (EventKey (MouseButton LeftButton) Down _ pt@(x,y)) 
                        (board,solved) = 
                            return (board',solved)
                            where 
                                    board' = if candidates == [] then board 
                                                        else rotateCell board (fst (head candidates))
                                    candidates = getCandidates (x,y) board
mousehandle (EventKey (Char 's') Down _ _ ) (board1, board2) = return (board2, board1)
mousehandle (EventKey (Char 'f') Down _ _ ) (board1, board2) = do
                                    print "filename?"
                                    ans <- getLine 
                                    games2File [board1, board2]   ans
                                    return (board1, board2)
mousehandle (EventKey (SpecialKey KeyEsc) Down _ _) _ = exitSuccess                                        
mousehandle _ x = return x

我知道每次单击返回的鼠标位置坐标是什么,因为函数getCandidates中的跟踪将它们打印到控制台。

计算机是Mac Book Pro。使用的Haskell是GHC 7.6.3,它是完整Haskell平台的一部分。使用“ cabal安装光泽”安装了光泽。

任何建议都将受到欢迎。

0 个答案:

没有答案