Strielokdzielny Temat założony przez niniejszego użytkownika |
Nie wyświetla obrazka jak kliknę np. B » 2012-03-04 12:46:36 Witam, Mam oto taki kod: void CGameEngine::Run() { std::cout << "Run(...) is started" << std::endl; while( m_render_window->IsOpened() ) { float ElapsedTime = Clock.GetElapsedTime(); sf::Event Event; while( m_render_window->GetEvent( Event ) ) { if( Event.Type == sf::Event::Closed ) { gDrawableRender.ReleaseList(); m_render_window->Close(); } if( Event.Type == sf::Event::KeyPressed && Event.Key.Code == sf::Key::Escape ) { m_render_window->Close(); } if( Event.Type == sf::Event::KeyPressed && Event.Key.Code == sf::Key::B ) { sf::Image obrazek2; obrazek2.LoadFromFile( "logogry.png" ); sf::Sprite naszSprajt; naszSprajt.SetImage( obrazek2 ); naszSprajt.SetPosition( 120, 0 ); m_render_window->Draw( naszSprajt ); } } m_render_window->Clear( sf::Color( 0, 0, 0 ) ); Update( ElapsedTime ); Clock.Reset(); } } Mam problem dotyczący tego, że gdy kliknę literkę B nie chce mi wyświetlić tego obrazka. Co zrobić, aby to normalnie działało? Proszę o szybką pomoc. Dotyczy to bibllioteki SFML 1.6 |
|
m4tx |
» 2012-03-04 12:50:42 1. Obrazki wczytuj tuż po uruchomieniu gry, nie jak są potrzebne. 2. Kurs STC - kod dawaj w [cpp][/cpp] 3. Daj sobie boola, np. isSpriteDrawn, i jak użytkownik wciśnie B to daj isSpriteDrawn = true; , a potem (poza pętlą ze zdarzeniami) if( isSpriteDrawn ) m_render_window->Draw( naszSprajt ); ... I nie ma prawa nie działać. |
|
Strielokdzielny Temat założony przez niniejszego użytkownika |
A to gdzie? » 2012-03-04 13:04:19 A to gdzie mam wrzucić? sf::Image obrazek2; obrazek2.LoadFromFile( "logogry.png" ); sf::Sprite naszSprajt; naszSprajt.SetImage( obrazek2 ); naszSprajt.SetPosition( 120, 0 ); m_render_window->Draw( naszSprajt );
|
|
m4tx |
» 2012-03-04 13:07:17 sf::Image obrazek2; obrazek2.LoadFromFile( "logogry.png" ); sf::Sprite naszSprajt; naszSprajt.SetImage( obrazek2 ); naszSprajt.SetPosition( 120, 0 ); Przed pętlą główną. m_render_window->Draw( naszSprajt ); W miejscu, gdzie rysujesz wszystko... U ciebie jest to z tego co widzę Update(). |
|
Strielokdzielny Temat założony przez niniejszego użytkownika |
» 2012-03-04 13:15:54 Niestety to nic nie pomogło. void CGameEngine::Run() { sf::Image obrazek2; obrazek2.LoadFromFile( "logogry.png" ); sf::Sprite naszSprajt; naszSprajt.SetImage( obrazek2 ); naszSprajt.SetPosition( 120, 0 ); std::cout << "Run(...) is started" << std::endl; while( m_render_window->IsOpened() ) { float ElapsedTime = Clock.GetElapsedTime(); sf::Event Event; while( m_render_window->GetEvent( Event ) ) { if( Event.Type == sf::Event::Closed ) { gDrawableRender.ReleaseList(); m_render_window->Close(); } if( Event.Type == sf::Event::KeyPressed && Event.Key.Code == sf::Key::Escape ) { isSpriteDrawn = true; } } m_render_window->Clear( sf::Color( 0, 0, 0 ) ); Update( ElapsedTime ); Clock.Reset(); if( isSpriteDrawn ) m_render_window->Draw( naszSprajt ); m_render_window->Display(); } }
Może ja coś źle robię, ale wydaję mi się, że zgodnie z instrukcją. |
|
m4tx |
» 2012-03-04 13:23:23 if( Event.Type == sf::Event::KeyPressed && Event.Key.Code == sf::Key::Escape ) Wciskasz B czy Escape? Bo ten kod powinien ustawić wyświetlanie sprite'a bo wciśnięciu Escape'a :P |
|
Strielokdzielny Temat założony przez niniejszego użytkownika |
» 2012-03-04 13:25:43 Po prostu zmieniłem, to przecież nie ma znaczenia. void CGameEngine::Run() { sf::Sprite naszSprajt; std::cout << "Run(...) is started" << std::endl; while( m_render_window->IsOpened() ) { float ElapsedTime = Clock.GetElapsedTime(); sf::Event Event; while( m_render_window->GetEvent( Event ) ) { if( Event.Type == sf::Event::Closed ) { gDrawableRender.ReleaseList(); m_render_window->Close(); } if( Event.Type == sf::Event::KeyPressed && Event.Key.Code == sf::Key::Escape ) { isSpriteDrawn = true; sf::Image obrazek2; obrazek2.LoadFromFile( "logogry.png" ); naszSprajt.SetImage( obrazek2 ); naszSprajt.SetPosition( 120, 0 ); } } m_render_window->Clear( sf::Color( 0, 0, 0 ) ); if( isSpriteDrawn ) m_render_window->Draw( naszSprajt ); Update( ElapsedTime ); Clock.Reset(); m_render_window->Display(); } }
Poprawiłem kod i teraz zamiast obrazka wyświetla mi się biały prostokąt. Co to może być tym razem? @EDIT Udało mi się rozwiązać problem. Dodałem po prostu w miejsce, gdzie wywołuje obrazek adres do niego. |
|
« 1 » |