0

我有一个包含 NSOpenGLView 子类 (GameView) 的 NSWindow 子类 (GameWindow)。

该应用程序是窗口化的(不会全屏显示)。

GameView 中的 OpenGL 动画由计时器每秒触发约 30 次。

出于演示的原因,无论应用程序中发生什么其他情况,GameView 动画都必须继续。它应该停止的唯一时间是在发生致命错误的情况下。

当 GameWindow 中的动画继续播放时,我需要呈现各种“模态”Cocoa 窗口(例如选择新游戏、确认退出等)。其中一些可能是工作表,但主要的需要显示为独立窗口(带有 WebViews)。

我的问题:如何显示这些“对话框”窗口,以便我的应用程序计时器继续触发,我的动画继续,但用户在 GameWindow 中对 GameView 的输入被阻止,直到用户关闭“对话框”窗口?

(这个时候需要支持虎+豹)。

4

2 回答 2

1

您是否尝试过常规的工作表/对话技巧?他们应该在这种情况下工作得很好。定时器被安排为运行循环的一部分,当你有一个模态表或窗口时它不会停止,因此它应该能够在事件被阻止时继续在后台渲染。

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

(如果需要,请填写您自己的委托和结束选择器。)

于 2009-02-27T04:50:35.307 回答
0

如果您想保留当前的模态窗口(不移动到工作表),您可以尝试在默认运行循环模式 (NSDefaultRunLoopMode) 之外的其他方式中自行安排 NSTimer,一旦运行循环停止运行,该模式就会挂起。

于 2009-03-02T03:01:54.107 回答