Какао - модальное окно с анимацией NSOpenGLView за ним - PullRequest
0 голосов
/ 27 февраля 2009

У меня есть подкласс NSWindow (GameWindow), содержащий подкласс NSOpenGLView (GameView).

Приложение работает в окне (не работает в полноэкранном режиме).

Таймер запускает анимацию OpenGL в GameView ~ 30 раз в секунду.

По причинам презентации анимация GameView ДОЛЖНА продолжаться независимо от того, что еще происходит в приложении. Единственный раз, когда он должен остановиться, это в случае фатальной ошибки.

Мне нужно представить различные «модальные» окна Какао (например, выбрать новую игру, подтвердить выход и т. Д.), Пока анимация в GameWindow продолжается. Некоторые из них могут быть листами, но основные должны отображаться в виде отдельных окон (в комплекте с WebViews).

МОЙ ВОПРОС: как я могу отобразить эти «диалоговые» окна так, чтобы таймер моего приложения продолжал срабатывать, моя анимация продолжается, но пользовательский ввод в GameView в GameWindow блокируется до тех пор, пока окно «диалоговое окно» не будет закрыто пользователем

(мне нужно сейчас поддержать Тигра + Леопарда).

Ответы [ 2 ]

1 голос
/ 27 февраля 2009

Вы пробовали обычные методы листа / диалога? Они должны нормально работать в этой ситуации. Таймеры запланированы как часть цикла выполнения, который не останавливается, когда у вас есть модальный лист или окно, поэтому он должен иметь возможность продолжить рендеринг в фоновом режиме, пока события заблокированы.

[NSApp beginSheet:sheetWindow modalForWindow:mainWindow modalDelegate:nil didEndSelector:NULL contextInfo:nil];

(За исключением заполнения своего собственного делегата и конечного селектора, если необходимо.)

0 голосов
/ 02 марта 2009

Если вы хотите сохранить текущие модальные окна (не переходя на листы), вы можете попробовать составить расписание NSTimer самостоятельно, кроме режима запуска по умолчанию (NSDefaultRunLoopMode), который зависает, как только этот цикл запуска прекращается.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...