如何显示实时输出SFML

时间:2015-06-01 02:08:24

标签: c++ sfml

我正在制作一个盒子里的表格。我必须提供输入,无论我输入什么,都会在我打字时显示在框中。我已经到了输入的地步但我无法在盒子上显示。

以下是片段:

case Event::TextEntered:
    if (isSelected)
    {
        char print;
        int xcor = 149;
        sf::Text t;
        t.setFont(font);
        do
        {
            print = event.text.unicode;
            //149.25

            t.setCharacterSize(15);
            t.setColor(Color::Black);
            t.setString(print);
            t.setPosition(xcor+1, 25);
            window.draw(t);
            //window.display();
        } while (event.text.unicode!=13);

        //cout << (char) event.text.unicode;    
    }
    break;

1 个答案:

答案 0 :(得分:3)

您应该每帧都绘制文本,无论是否有TextEntered事件。你还需要一个字符串来存储文本。所以你的主循环看起来像这样:

sf::String text_string;
sf::Text text;
text.setCharacterSize(15);
text.setColor(Color::Black);
text.setPosition(150, 25);

while (window.isOpen())
{
    // Process events
    sf::Event event;
    while (window.pollEvent(event))
    {
        switch (event.type)
        {
            case Event::TextEntered:
                if (isSelected)
                {
                    text_string += sf::String(event.text.unicode);
                    text.setString(text_string);
                }
                break;

            // other events ...
        }

    }

    window.clear();
    window.draw(text)
    window.display();
}