Welcome, Guest. Please login or register. Did you miss your activation email?

Show Posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.


Messages - ArkhamKn1ght

Pages: [1]
1
Window / Smooth movement
« on: October 12, 2022, 03:42:15 pm »
Hello. I'm new to SFML and trying to move a circle without repeat delay. The problem is that circle only moves when I press the button, but it stops moving after that(ie it moves only one time, then I have to press the button again). It's weird though that if 'A' is pressed and I start moving cursor on the window the circle starts to move.

#include <SFML/Graphics.hpp>

int main()
{
    sf::RenderWindow window(sf::VideoMode(200, 200), "SFML works!");
    sf::CircleShape shape(100.f);
    shape.setPosition(50.0f, 50.0f);
    shape.setFillColor(sf::Color::Green);
    bool flag = false;
    window.setKeyRepeatEnabled(false);
    while (window.isOpen())
    {
        sf::Event evnt;
        while (window.pollEvent(evnt))
        {
            if (evnt.type == sf::Event::Closed) {
                window.close();
            }
            if (evnt.type == sf::Event::Resized) {
                sf::FloatRect visibleArea(0.f, 0.f, evnt.size.width, evnt.size.height);
                window.setView(sf::View(visibleArea));
            }
            if (evnt.type == sf::Event::KeyPressed) {
                if (evnt.key.code == sf::Keyboard::A) {
                    flag = true;
                }

            }
            if (evnt.type == sf::Event::KeyReleased) {
                if (evnt.key.code == sf::Keyboard::A) {
                    flag = false;
                }
            }
            if (flag) {
                sf::Vector2f movement;
                movement = shape.getPosition();
                movement.x += 5.0f;
                movement.y += 5.0f;
                shape.setPosition(movement);
            }
           
        }
        window.clear();
        window.draw(shape);
        window.display();
    }

    return 0;
}

Pages: [1]
anything