terça-feira, 22 de janeiro de 2013

Trabalhando com Teclado e Mouse - Parte I


Os eventos sf::Event::KeyPressed e sf::Event::KeyReleased são desencadeados quando uma tecla é pressionada ou liberada. Se uma tecla está sendo pressionada, vários eventos KeyPressed serão gerados. Para desabilitar eventos KeyPressed repetidos, você pode usar a função window.setKeyRepeatEnabled(false).
Há um tutorial que mostra como manipular teclas pressionadas em tempo real (ao contrário desse evento, que tem um intervalo entre cada chamada). Você pode ler tanto este como o artigo presente aqui no site.
O membro associado a este evento é o event.key, que contém o código da tecla digitada/liberada.
if (event.type == sf::Event::KeyPressed)
{
    if (event.key.code == sf::Keyboard::Escape)
    {
        std::cout << "the escape key was pressed" << std::endl;
    }
}

O evento sf::Event::MouseWheelMoved é desencadeado quando a roda do mouse é movida. O membro associado a este evento é o event.mouseWheel, que contém a quantidade de movimento da roda e a posição atual do cursor.
if (event.type == sf::Event::MouseWheelMoved)
{
    std::cout << "wheel movement: " << event.mouseWheel.delta << std::endl;
    std::cout << "mouse x: " << event.mouseWheel.x << std::endl;
    std::cout << "mouse y: " << event.mouseWheel.y << std::endl;
}

Os eventos sf::Event::MouseButtonPressed e sf::Event::MouseButtonReleased são desencadeados quando o botão do mouse é pressionado/liberado. O membro associado é o event.mouseButton, que contém o código do botão pressionado/liberado e a posição atual do cursor.
if (event.type == sf::Event::MouseButtonPressed)
{
    if (event.mouseButton.button == sf::Mouse::Right)
    {
        std::cout << "the right button was pressed" << std::endl;
        std::cout << "mouse x: " << event.mouseButton.x << std::endl;
        std::cout << "mouse y: " << event.mouseButton.y << std::endl;
    }
}

O evento sf::Event::MouseMoved é desencadeado quando o mouse é movido dentro da janela (tendo esta foco ou não). O membro associado a este evento é o event.mouseMove, que contém a posição atual do cursor relativa à janela.
if (event.type == sf::Event::MouseMoved)
{
    std::cout << "new mouse x: " << event.mouseMove.x << std::endl;
    std::cout << "new mouse y: " << event.mouseMove.y << std::endl;
}

Os eventos sf::Event::MouseEntered e sf::Event::MouseLeft são desencadeados quando o cursor do mouse entra/sai da janela.
if (event.type == sf::Event::MouseEntered)
    std::cout << "the mouse cursor has entered the window" << std::endl;

if (event.type == sf::Event::MouseLeft)
    std::cout << "the mouse cursor has left the window" << std::endl;

Nenhum comentário:

Postar um comentário