Обработчик мыши в Haskell Gloss на Mac - PullRequest
0 голосов
/ 17 октября 2018

Я был не прав насчет проблемы.Обработчики событий работали нормально, и теперь все работает.Я нашел ответ на http://gloss.ouroborus.net/,, и соответствующий параграф цитируется ниже.Я прошу прощения за то, что задал вводящий в заблуждение вопрос.Я бы удалил вопрос, но не вижу способа сделать это.

из gloss.ouroborus.net:

В: На моем MacBook Pro под OSX программы глянца зависают после отображения первых нескольких кадров.О: Это может происходить в системах с двумя графическими процессорами, когда ОС переключается с интегрированного графического процессора (встроенного в процессор) на дискретный (отдельно от основного процессора).Программа глянца иногда может нарисовать несколько кадров перед застреванием, иначе она просто показывает черное окно.Это, вероятно, ошибка в OSX, которая неправильно переключает графический контекст.Обходной путь - отключить автоматическое переключение графического процессора в Системные настройки / Экономия энергии.

Оригинальный вопрос:

Я написал игру на Haskell Gloss, в которой используются обработчики щелчков мыши и клавиатуры.Он компилируется и прекрасно работает на ПК, но, в то время как он компилируется и загружается на Apple и представляет игровой экран, неправильно работают обработчики мыши и клавиатуры.Обработчик мыши распознает, что была нажата кнопка мыши, но сообщает ту же пару цифр для положения мыши, независимо от того, где находится мышь.Обработчик клавиатуры не работает для 's' и 'f', но клавиша escape работает.

Вот обработчики:

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 install gloss».

Любые предложения приветствуются.

...