Большая задержка в вводе текст SFML

238
13 октября 2021, 18:40

Всем привет, в моём проекте sfml используется ввод текста в текстовое поле. По умолчанию такой функции нет в sfml, но я поискал в интернете и нашёл способ (код ниже). Вообщем спрашивал у людей, которые использовали тот же способ - у них все нормально, а у меня текст появляется с очень большой задержкой, приходится выжимать кнопку несколько секунд чтобы текст появился.

Вот код на c++ & sfml:

    sf::Event event;
    while (this->window->pollEvent(event))
    {
        if (event.type == sf::Event::TextEntered)
        {
            if (event.text.unicode < 128)
            {
                if (event.text.unicode == 13) // return key
                {
                    // finished entering name
                }
                else if (event.text.unicode == 8) { // backspace
                    if (name.size() > 0) name.resize(name.size() - 1);
                }
                else {
                    name += static_cast<char>(event.text.unicode);
                }
                text.setString(name);
            }
        }
    }

Если кто то сталкивался с подобной проблемой, напишите как ее решили. Заранее спасибо.

Answer 1

Вот, я так обновление сделал в цикле, и всё летает, так что проблема как говорилось выше в моменте отображения текста на экран.

while (window.pollEvent(event))
    {
        if (event.type == sf::Event::Closed)
            window.close();
        if (event.type == sf::Event::TextEntered)
        {
            if (event.text.unicode < 128)
            {
                if (event.text.unicode == 13) // return key
                {
                    // finished entering name
                }
                else if (event.text.unicode == 8) { // backspace
                    if (name.size() > 0) {
                        name.resize(name.size() - 1);
                        text.setString(name);
                        
                        
                    }
                }
                else {
                    name += static_cast<char>(event.text.unicode);
                }
                text.setString(name);
                text.setPosition(20, 100);
            }
        }
        
    }
    window.clear();
    window.draw(text);
    window.display();
}
READ ALSO
Динамические библиотеки c++ Mac OS

Динамические библиотеки c++ Mac OS

Я новичок в C++Работаю на Macbook

155
Замена элементов матрицы

Замена элементов матрицы

Есть задание: Динамически выделить память под N*M элементов целого типа intРазработать алгоритм и программу обработки двумерного динамического...

213
Итераторы, rvalue и lvalue

Итераторы, rvalue и lvalue

По определённым причинам имеется необходимость реализовать собственный итератор (Forward iterator) здесь сказано следующее:

280
Коллекции &lt;?, array&lt;type&gt;&gt; на C++/CLI

Коллекции <?, array<type>> на C++/CLI

Доброго времени суток

96