【问题标题】:How to show realtime output SFML如何显示实时输出 SFML
【发布时间】:2015-06-01 02:08:23
【问题描述】:

我正在一个盒子里制作一个表格。我必须提供输入,我输入的任何内容都会在我输入时显示在框中。我已经到了可以输入但我无法在盒子上显示的地步。

这是sn-p:

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;

【问题讨论】:

    标签: c++ sfml


    【解决方案1】:

    无论是否有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();
    }
    

    【讨论】:

    • 无法渲染它。我有多层表格,如果我调用 clear 等函数,就会出现闪烁。我想单击一个框,然后编写输入并实时显示。它的替代品是什么?
    猜你喜欢
    • 2022-10-17
    • 2011-12-17
    • 2011-08-01
    • 1970-01-01
    • 2019-04-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-09
    • 1970-01-01
    相关资源
    最近更新 更多