2014-01-03 3 views
0

Я пытаюсь отобразить заставку в течение 5 секунд в SFML 2.1, дисплей отображается в главном режиме gameloop, но в методе init ничего не отображается, значки отображаются в течение 5 секунд на доке , но нет окна ...SFML RenderWindow не открывается в splashscreen

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

Вам необходим базовый игровой цикл, и вам нужно заменить вызов сна на конструкцию таймера, подходящую для игр. Пожалуйста, посмотрите here для получения подробного ответа.

Что бы ни случилось в вашей игре, возможно, никогда не повлияет на цикл цикла ввода/обновления/рендеринга. Если вы хотите не принимать вход и не обновлять в течение 5 секунд, отлично. Но вам нужен этот цикл для запуска.

псевдокода, потому что у меня нет компилятора под рукой:

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(); 
} 
Смежные вопросы