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

SFML 2.1 Problem z wyświetlaniem klatek animacji

Ostatnio zmodyfikowano 2014-08-23 20:37
Autor Wiadomość
Acarin1995
Temat założony przez niniejszego użytkownika
SFML 2.1 Problem z wyświetlaniem klatek animacji
» 2014-08-22 16:19:27
Witam stworzyłem program który wyświetla klatki w zależności od wciśnietego klawisza i przemieszcza obiekt w danym kierunku niestety zamiast wyświetlać pojedyńcze klatki wyświetla wszytkie zawarte w pliku ktoś wie daczego? I jak to naprawić kod poniżej
C/C++
#include <SFML/Graphics.hpp>

int main()
{
    int klatka( 0 );
    sf::RenderWindow App( sf::VideoMode( 800, 600, 32 ), "Okienko" );
   
    sf::Texture tekstura;
    tekstura.loadFromFile( "Ruch.png" );
    sf::Sprite postac;
    postac.setTexture( tekstura );
    postac.setTextureRect( IntRect( 0, 0, 16, 16 ) );
    while( App.isOpen() )
    {
       
        sf::Event zdarzenie;
        while( App.pollEvent( zdarzenie ) )
        {
            if( zdarzenie.type == sf::Event::Closed )
                 App.close();
           
            if( sf::Keyboard::isKeyPressed( sf::Keyboard::Left ) )
            {
                klatka = 4;
                postac.setTextureRect( IntRect( klatka * 16, 0, 16, 16 ) );
                postac.move( - 16, 0 );
            }
            else if( sf::Keyboard::isKeyPressed( sf::Keyboard::Right ) )
            {
                klatka = 3;
                postac.setTextureRect( IntRect( klatka * 16, 0, 16, 16 ) );
                postac.move( 16, 0 );
            }
            else if( sf::Keyboard::isKeyPressed( sf::Keyboard::Down ) )
            {
                klatka = 2;
                postac.setTextureRect( IntRect( klatka * 16, 0, 16, 16 ) );
                postac.move( 0, 16 );
            }
            else if( sf::Keyboard::isKeyPressed( sf::Keyboard::Up ) )
            {
                klatka = 1;
                postac.move( 0, - 16 );
                postac.setTextureRect( IntRect( klatka * 16, 0, 16, 16 ) );
            }
           
        }
        App.clear( sf::Color::White );
        App.draw( postac );
        App.display();
    }
    return EXIT_SUCCESS;
}
P-115952
michal11
» 2014-08-22 16:33:25
Spróbuj tak:

C/C++
postac.setTexture( tekstura );
IntRect fragment( 0, 0, 16, 16 );
postac.setTextureRect( fragment );
P-115955
Acarin1995
Temat założony przez niniejszego użytkownika
» 2014-08-23 15:19:50
Coś mi nie działa. :/

1>------ Build started: Project: Nevermore, Configuration: Debug Win32 ------
1>  main.cpp
1>c:\projekty\nevermore_smfl\nevermore\main.cpp(12): error C2065: 'IntRect' : undeclared identifier
1>c:\projekty\nevermore_smfl\nevermore\main.cpp(12): error C2146: syntax error : missing ';' before identifier 'fragment'
1>c:\projekty\nevermore_smfl\nevermore\main.cpp(12): error C3861: 'fragment': identifier not found
1>c:\projekty\nevermore_smfl\nevermore\main.cpp(13): error C2065: 'fragment' : undeclared identifier
1>c:\projekty\nevermore_smfl\nevermore\main.cpp(26): error C3861: 'IntRect': identifier not found
1>c:\projekty\nevermore_smfl\nevermore\main.cpp(32): error C3861: 'IntRect': identifier not found
1>c:\projekty\nevermore_smfl\nevermore\main.cpp(38): error C3861: 'IntRect': identifier not found
1>c:\projekty\nevermore_smfl\nevermore\main.cpp(45): error C3861: 'IntRect': identifier not found
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========
A jak z innymi klatkami bo chyba też źle coś zrobiłem?
P-115975
1aam2am1
» 2014-08-23 15:56:21
sf::IntRect
P-115977
Acarin1995
Temat założony przez niniejszego użytkownika
» 2014-08-23 19:22:32
A jak to zrobić z tym, bo klatki mi się nie zmieniają?
C/C++
if( sf::Keyboard::isKeyPressed( sf::Keyboard::Left ) )
{
    klatka = 4;
    postac.setTextureRect( sf::IntRect( klatka * 16, 0, 16, 16 ) );
    postac.move( - 16, 0 );
}
P-115979
Acarin1995
Temat założony przez niniejszego użytkownika
» 2014-08-23 20:37:58
Problem rozwiązany. Dzięki.
P-115981
« 1 »
  Strona 1 z 1