我正在尝试在FLTK中实现游戏循环
void SnakeFLTK::init() {
_display = new Fl_Window(900, 600);
if (!_display)
throw SnakeFLTKException("Couldn't make fltk window!");
_display->color(FL_BLACK);
_display->show();
while (!_doExit) {
std::cout << "-->" << std::endl;
}
Fl::run();
}
我的问题是窗口未显示。我想继续在while (!_doExit)
循环中在窗口上显示和重绘,使用_doExit
很重要。我尝试使用
while (Fl::wait > 0)
,但是此方法似乎有其自己的循环来等待事件。 如何像我一样实现循环并显示窗口?
答案 0 :(得分:1)
FLTK在调用Fl::run
之前不执行任何操作。因此,在调用Fl::run
之后您将无法执行任何操作,因为该函数仅在关闭主窗口时返回。
正好在Fltk本身“运行”时做某事,您可以像这样注册到空闲循环:
void CallbackFunc( void* )
{
std::cout << "Hallo" << std::endl;
}
int main() {
auto _display = new Fl_Window(900, 600);
_display->color(FL_BLACK);
_display->show();
Fl::add_idle( CallbackFunc );
Fl::run();
}
在给定的回调函数中,您可以执行绘图或您希望在FLTK中完成的任何操作,而不受活动小部件本身事件的驱动。