C 和 SDL 退出函数
C and SDL quit from function
我使用 C 和 SDL 2.0,但我有一个问题,这个(当你点击 window 的 "x" 它退出时):
void function(SDL_Surface *screen) {
SDL_Event event;
bool quit=false;
while (!quit) {
SDL_WaitEvent(&event);
switch (event.type) {
case...
case SDL_QUIT:
quit = true;
break;
}
}
这是可行的,但不是很好。如果这是在这样的函数中,它只会退出到 main(),所以我需要再次单击 "x" 才能退出整个程序。
我该如何解决? (我每次都想退出整个程序,不管它是否在函数中)。
正如评论中已经提到的,您很可能有多个事件处理循环,这通常是不正确的设计。你的游戏总体布局应该是这样的:
int main(int argc, char* argv[]) {
// do initialize stuff
bool run = true;
SDL_Event evt;
// game loop
while (run) {
// process OS events
while(SDL_PollEvent(&evt) != 0) {
switch (evt.type) {
case SDL_QUIT:
run = false;
break;
}
}
update();
render();
}
// clean up
SDL_Quit();
return 0;
}
我使用 C 和 SDL 2.0,但我有一个问题,这个(当你点击 window 的 "x" 它退出时):
void function(SDL_Surface *screen) {
SDL_Event event;
bool quit=false;
while (!quit) {
SDL_WaitEvent(&event);
switch (event.type) {
case...
case SDL_QUIT:
quit = true;
break;
}
}
这是可行的,但不是很好。如果这是在这样的函数中,它只会退出到 main(),所以我需要再次单击 "x" 才能退出整个程序。 我该如何解决? (我每次都想退出整个程序,不管它是否在函数中)。
正如评论中已经提到的,您很可能有多个事件处理循环,这通常是不正确的设计。你的游戏总体布局应该是这样的:
int main(int argc, char* argv[]) {
// do initialize stuff
bool run = true;
SDL_Event evt;
// game loop
while (run) {
// process OS events
while(SDL_PollEvent(&evt) != 0) {
switch (evt.type) {
case SDL_QUIT:
run = false;
break;
}
}
update();
render();
}
// clean up
SDL_Quit();
return 0;
}