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

[SFML, C++] Czyszczenie okna

Ostatnio zmodyfikowano 2012-03-05 20:10
Autor Wiadomość
Strielokdzielny
Temat założony przez niniejszego użytkownika
» 2012-03-04 15:15:10
C/C++
void CGameEngine::Run()
{
    sf::Sprite naszSprajt;
    sf::Image Obrazek; //Ładowanie obrazka z atlasem tekstur animacji
    Obrazek.LoadFromFile( "Robot.png" );
    CAnimSet Animacja; //Tworzymy obiekt na animacje
    Animacja.AnimFromImage( Obrazek, 64, 64 );
    CActor Robot;
    std::cout << "Run(...) is started" << std::endl;
    while( m_render_window->IsOpened() )
    {
        //float ElapsedTime = GetRenderWindow()->GetFrameTime();
       
        float ElapsedTime = Clock.GetElapsedTime();
        //Clock.Reset();
       
        sf::Event Event;
        while( m_render_window->GetEvent( Event ) )
        {
            if( Event.Type == sf::Event::Closed )
            { gDrawableRender.ReleaseList(); //Ręczne usuwanie niektórych Singleton
                m_render_window->Close();
            }
           
            //startuje gre!
            if( Event.Type == sf::Event::KeyPressed && Event.Key.Code == sf::Key::S )
            {
                isSpriteDrawn = true;
               
                Robot.SetAnim( & Animacja, true ); //Ustawienie animacji
                Robot.SetFrameTime( 0.125f ); //Ustawienia czasu odtwarzania klatki animacji
                Robot.SetPosition( 200, 200 ); //Ustawienie pozycji początkowej na scenie
               
                gDrawableRender.Register( & Robot );
                m_render_window->Clear();
            }
           
        }
        sf::Image obrazek2;
        obrazek2.LoadFromFile( "logogry.png" );
        sf::Sprite Sprajt;
        Sprajt.SetImage( obrazek2 );
        Sprajt.SetPosition( 80, 0 );
        m_render_window->Draw( Sprajt );
        Update( ElapsedTime );
        if( isSpriteDrawn ) m_render_window->Draw( naszSprajt );
       
        Clock.Reset(); //Chyba jest lepiej....
        m_render_window->Display();
       
        //Aktualizacja Gry
       
    }

Mam taki kod. W środkowej sekcji mam kod dotyczący kliknięcia przycisku S, który ma startować grę. Gdy kliknę S to wyświetla mi postać i chodzi mi jeszcze, aby zrobić czyszczenie obrazku, żeby obrazek "logogry.png" schował się.
P-51964
pekfos
» 2012-03-04 15:21:27
C/C++
if( Event.Type == sf::Event::KeyPressed && Event.Key.Code == sf::Key::S )
{
    //..
    isSpriteDrawn = true;
    //..
}
//..
if( isSpriteDrawn ) m_render_window->Draw( naszSprajt );

Chyba za wcześnie na SFML.. Jak po 'S' ma zniknąć, to trzeba na false ustawić, no nie?
P-51967
Strielokdzielny
Temat założony przez niniejszego użytkownika
» 2012-03-04 15:23:19
To czemu jak jest true to mi wyświetla normalnie?
P-51968
pekfos
» 2012-03-04 15:38:29
if( isSpriteDrawn ) m_render_window->Draw( naszSprajt );

Bo warunek jest? » KursyKurs C++ kurs
P-51970
fensz
» 2012-03-04 16:15:29
Wydaje mi się że widzę tu kod SCIGame. Jeżeli się nie mylę, to w pliku CDrawableRender mógłbyś ustawić czyszczenie w pętli głównej
P-51986
akwes
» 2012-03-04 16:25:21
@fensz, to nic nie da
P-51988
pekfos
» 2012-03-04 16:30:13
Wydaje mi się że widzę tu kod SCIGame. Jeżeli się nie mylę, to w pliku CDrawableRender mógłbyś ustawić czyszczenie w pętli głównej
Chyba się mylisz. Pętlę główną ma w kodzie, który pokazuje a w tej pętli jest czyszczenie. Poza tym to jw: To nic nie da.
P-51990
fensz
» 2012-03-04 16:31:52
A nie można statycznie orzypisać czyszczenia>
P-51992
1 « 2 » 3
Poprzednia strona Strona 2 z 3 Następna strona