segunda-feira, 21 de janeiro de 2013

Trabalhando com tempo

É usada uma classe (sf::Time) para trabalhar com tempo na SFML. O valor pode ser de qualquer uma das seguintes unidades: segundos, milissegundos, microssegundos. No exemplo abaixo, todos os valores  representam 1 centésimo de segundo.

sf::Time t1 = sf::microseconds(10000);
sf::Time t2 = sf::milliseconds(10);
sf::Time t3 = sf::seconds(0.01f);

É possível fazer a conversão entre as unidades:

sf::Time time = sf::microseconds(10000);sf::Int32 msec = time.asMilliseconds();
float     sec  = time.asSeconds();

sf::Time é apenas uma quantidade de tempo, podendo ser negativa e sofrer operações matemáticas:

sf::Time t1 = sf::seconds(0.01f);
sf::Time t2 = t1 * 2;
sf::Time t3 = t1 + t2;
sf::Time t4 = -t3;

bool b1 = (t1 == t2);
bool b2 = (t3 > t4);

Para medir o tempo, vamos usar uma classe específica: sf::Clock. Essa possui 2 funções: getElapsedTime() e restart(). A primeira é descartável quando usamos a segunda:

//esses códigos
sf::Clock clock;
sf::Time elapsed1 = clock.getElapsedTime(); //retorna o tempo
clock.restart(); //reseta//dão no mesmo que os abaixo (que são mais práticos)
sf::Clock clock;
sf::Time elapsed1 = clock.restart(); //reseta e retorna o tempo
}

Nenhum comentário:

Postar um comentário