Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

[SFML 2.1] Funkcja draw w Evencie.

Ostatnio zmodyfikowano 2014-02-02 14:36
Autor Wiadomość
.kqm
Temat założony przez niniejszego użytkownika
[SFML 2.1] Funkcja draw w Evencie.
» 2014-02-02 00:22:22
Witam. Mam problem, mianowicie, gdy próbuje wywołać funkcję:
C/C++
while( oknoAplikacji.isOpen() )
{
    sf::Event zdarzenie;
    while( oknoAplikacji.pollEvent( zdarzenie ) )
    {
        if( zdarzenie.type == sf::Event::MouseButtonReleased && zdarzenie.mouseButton.button == sf::Mouse::Left )
        {
            oknoAplikacji.draw( start );
        }
    }
}
To nie pojawia się obrazek start. Gdy próbuje go otworzyć poza zdarzeniem, to wszystko ładnie się wyświetla, co może być przyczyną?
P-103812
kryCHa
» 2014-02-02 00:26:34
Musisz dodać funkcję
oknoAplikacji.display();
P-103813
.kqm
Temat założony przez niniejszego użytkownika
» 2014-02-02 00:32:30
Gdy dodałem funkcję
oknoAplikacji.display();
 to obrazek pojawia się, ale na ułamek sekundy.
P-103816
kryCHa
» 2014-02-02 00:45:04
Ponieważ najpewniej dodajesz to w evencie, gdzie jeżeli puścisz lewy przycisk myszki obrazek znika. Umieść
oknoAplikacji.display()
 poza
while( oknoAplikacji.pollEvent( zdarzenie ) )
P-103819
.kqm
Temat założony przez niniejszego użytkownika
» 2014-02-02 00:58:47
Jest tak:
C/C++
#include <iostream>
#include <SFML/Graphics.hpp>

int main()
{
    sf::RenderWindow oknoAplikacji( sf::VideoMode( 1600, 1200, 32 ), "Gra", sf::Style::Fullscreen );
    sf::Texture teksturastart;
    sf::Texture teksturatlo;
   
    teksturastart.loadFromFile( "start.png" );
    teksturatlo.loadFromFile( "tlo3.png" );
   
    sf::RectangleShape tlo;
    tlo.setSize( sf::Vector2f( oknoAplikacji.getSize().x, oknoAplikacji.getSize().y ) );
    tlo.setTexture( & teksturatlo );
    tlo.setPosition( 0, 0 );
   
    sf::RectangleShape start;
    start.setSize( sf::Vector2f( oknoAplikacji.getSize().x / 4.5, oknoAplikacji.getSize().y / 10 ) );
    start.setTexture( & teksturastart );
    start.setPosition( 200, 770 );
   
    while( oknoAplikacji.isOpen() )
    {
        sf::Event zdarzenie;
        while( oknoAplikacji.pollEvent( zdarzenie ) )
        {
            if( zdarzenie.type == sf::Event::Closed )
            {
                oknoAplikacji.close();
            }
            if( zdarzenie.type == sf::Event::MouseButtonPressed && zdarzenie.mouseButton.button == sf::Mouse::Left )
            {
                oknoAplikacji.draw( start );
            }
        }
        oknoAplikacji.draw( tlo );
        oknoAplikacji.display();
    }
    return 0;
}

Gdy dam
oknoAplikacji.display()
 poza
while( oknoAplikacji.pollEvent( zdarzenie ) )
 to nic się nie wyświetla.
P-103824
kubawal
» 2014-02-02 09:58:06
Bo wyświetlasz obrazek pod tłem...
C/C++
oknoAplikacji.draw( tlo );
 daj przed pętla zdarzeń.

P-103828
.kqm
Temat założony przez niniejszego użytkownika
» 2014-02-02 10:38:11
Dałem
oknoAplikacji.draw( tlo );
 przed pętlą zdarzeń i nadal się pojawia na ułamek sekundy. ;/
C/C++
#include <iostream>
#include <SFML/Graphics.hpp>

int main()
{
    sf::RenderWindow oknoAplikacji( sf::VideoMode( 1600, 1200, 32 ), "Gra", sf::Style::Fullscreen );
    sf::Texture teksturastart;
    sf::Texture teksturatlo;
   
    teksturastart.loadFromFile( "start.png" );
    teksturatlo.loadFromFile( "tlo3.png" );
   
    sf::RectangleShape tlo;
    tlo.setSize( sf::Vector2f( oknoAplikacji.getSize().x, oknoAplikacji.getSize().y ) );
    tlo.setTexture( & teksturatlo );
    tlo.setPosition( 0, 0 );
   
    sf::RectangleShape start;
    start.setSize( sf::Vector2f( oknoAplikacji.getSize().x / 4.5, oknoAplikacji.getSize().y / 10 ) );
    start.setTexture( & teksturastart );
    start.setPosition( 200, 770 );
   
    while( oknoAplikacji.isOpen() )
    {
        oknoAplikacji.draw( tlo );
        sf::Event zdarzenie;
        while( oknoAplikacji.pollEvent( zdarzenie ) )
        {
            if( zdarzenie.type == sf::Event::Closed )
            {
                oknoAplikacji.close();
            }
            if( zdarzenie.type == sf::Event::MouseButtonPressed && zdarzenie.mouseButton.button == sf::Mouse::Left )
            {
                oknoAplikacji.draw( start );
            }
        }
        oknoAplikacji.display();
    }
    return 0;
}
P-103832
ShadowkhaN
» 2014-02-02 10:52:14
Musisz wywolac jeszcze funkcje oknoAplikacji.clear(); zobacz sobie w necie podstawowy szkielet pisania w sfml
P-103833
« 1 » 2
  Strona 1 z 2 Następna strona