SFML上的文字不会显示(?)

时间:2016-12-15 13:20:37

标签: c++ sfml

template <class type>
class loader{
private:
    tree/*<type>*/ *seq;
    sf::Sprite BG_img;
    sf::Texture texture;
    int seq_c;
    //node<sf::String> cp1;
    //node<sf::String> *temp;
    //declaring text object
    sf::Text text;
    sf::String path;
    string data

public:
    loader(){
        seq=NULL;
        seq_c=1;
        //setting font
        sf::Font myfont;
        myfont.loadFromFile("fonts/Myriad Pro Regular.ttf");

        //setting text
        //text.SetFont(myfont);
        //text.SetSize(20);
        //text.setColor(sf::Color::White);

        data=""; 
    }

    int load_now(sf::String seq_a='1'){
        ifstream ff;

        string s_path =  "Sequence/" + seq_a + ".txt";
        ff.open(s_path, ios::in);
        getline(ff,data);

        path = "Sequence/" + seq_a +".jpg";
        texture.loadFromFile(path);
        BG_img.setTexture(texture);


        //setting text position
        //text.setPosition(10,0);

        //passing text
        text.setString("Hello");
        text.setCharacterSize(20);
        text.setColor(sf::Color::Red);
        text.setStyle(sf::Text::Regular);

    }

    void draw(sf::RenderWindow &window){
        //window.draw(BG_img);
        //draW TO DISPLAY text
        window.draw(text);
    }
    int choose(int inp){
        return load_now(seq->get_data(inp));
    }
};

嗨,我正在尝试使用SFML显示一些文本,我试图更改sf :: String和sf :: Text但似乎没有显示任何内容,我试图在构造函数上注释和取消注释文本设置。 当我运行程序时,显示图片但不显示文本。 注意:

//declare loader
    loader<sf::String> loader_a;
void play(){
    while(window.isOpen()){
        window.clear();

        sf::Event event;
        while(window.pollEvent(event)){
            if (event.type == sf::Event::Closed){
                window.close();
            }
            //start code here
        }

        if (scene_counter==0){
            mainmenu.draw(window);
        }
        else if(scene_counter==1){
            loader_a.draw(window);
        }
        window.display();
    }
}

};

我使用这种代码来显示文字和图片

1 个答案:

答案 0 :(得分:1)

你只是创建了一个超出范围的字体,这是错误的。一个sf :: Text接受一个sf :: Font的引用,如果它超出了你所做的范围,你的文本就不能显示任何内容。解决方案是将sf :: Font定义为加载器类的成员,这样就可以了!