我正在尝试在SFML 2.1中显示启动画面5秒钟,显示屏显示在主游戏循环中,但在init方法中,没有显示任何内容,图标在停靠栏上显示5秒钟,但没有窗口..
int initGame(){
gameState = GAME_LOADING;
// Create the main window
window.create(mainVideoMode, "SFML Window", sf::Style::Default);
// Set the Icon
if (!icon.loadFromFile(resourcePath() + "icon.png")) {
gameState = GAME_EXIT;
}
sf::Texture texture;
if (!texture.loadFromFile(resourcePath() + "splashscreen.png"))
{
gameState = GAME_EXIT;
}
window.setIcon(icon.getSize().x, icon.getSize().y, icon.getPixelsPtr());
sf::Sprite sprite(texture);
window.clear();
window.draw(sprite);
window.display();
// Create a graphical text to display
/*if (!font.loadFromFile(resourcePath() + "sansation.ttf")) { If Needed
return EXIT_FAILURE;
}*/
sf::sleep(sf::seconds(5));
gameState = GAME_PLAYING;
return 1;
}
答案 0 :(得分:0)
您需要一个基本的游戏循环,并且您需要使用适合游戏的计时器构造来替换您的睡眠呼叫。请查看here以获取详细答案。
无论您的游戏发生什么,都可能永远不会影响输入/更新/渲染的游戏循环周期。如果你想不接受输入而不是5秒更新,那很好。但是你需要循环才能运行。
PseudoCode,因为我手头没有编译器:
variable timePassed = 0 seconds;
while(window is open && timePassed < 5 seconds)
{
timePassed += the time that passed since the last loop
window.clear();
window.draw(splashscreen);
window.display();
}