terça-feira, 22 de janeiro de 2013

Trabalhando com Teclado e Mouse - Parte II

Na primeira parte deste artigo, abordamos os eventos relacionados ao teclado e ao mouse. Neste segunda parte, veremos como verificar o estado das teclas/botões em tempo-real. Por exemplo, veremos se uma tecla escolhida está sendo pressionada, ao invés de sermos notificados que alguma tecla foi pressionada.

Teclado

A classe que dá acesso ao estado das teclas é a sf::Keyboard. Esta contém apenas uma funçãoisKeyPressed. Essa função checa o estado atual de uma tecla. Mesmo que a janela esteja sem foco, a função funciona.

if (sf::Keyboard::isKeyPressed(sf::Keyboard::Left))
{
    character.move(1, 0);
}

Códigos de teclas são definidos na enum sf::Keyboard::Key.
Mouse

A classe que dá acesso ao estado do mouse é a sf::Mouse.
if (sf::Mouse::isButtonPressed(sf::Mouse::Left))
{
    gun.fire();
}

Códigos de botões do mouse são definidos na enum sf::Mouse::Button. São 5 os botões: esquerdo, direito, roda e mais outros dois.
Você também obter/definir a posição atual do mouse, relativa ao desktop ou à janela.
// relativa ao desktop
sf::Vector2i globalPosition = sf::Mouse::getPosition();

// relativa à janela
sf::Vector2i localPosition = sf::Mouse::getPosition(window);
// relativa ao desktop
sf::Mouse::setPosition(sf::Vector2i(10, 50));

// relativa à janela
sf::Mouse::setPosition(sf::Vector2i(10, 50), window);

Concluindo o artigo, podemos notar que não é muito complicado trabalhar com teclado e mouse. É por isso que a SFML significa Simple and Fast Multimedia Library.

Nenhum comentário:

Postar um comentário