可可 - 模态窗口,后面有动画NSOpenGLView

时间:2009-02-27 04:45:46

标签: cocoa opengl animation modal-dialog

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

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

GameView中的OpenGL动画每秒被定时器发射约30次。

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

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

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

(此时我需要支持Tiger + Leopard)。

2 个答案:

答案 0 :(得分:1)

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

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

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

答案 1 :(得分:0)

如果你想保留当前的模态窗口(不移动到工作表),你可以尝试在默认的runloop模式(NSDefaultRunLoopMode)之外自己安排NSTimer,它会在runloop停止运行时立即挂起。