SFML 上的文本不会显示(?)
text on SFML won't displayed(?)
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();
}
}
};
我用这种代码来显示文字和图片
您只是创建了一种超出范围的字体,这是错误的。 sf::Text 引用了 sf::Font,如果它超出范围,这就是您所做的,您的文本将无法显示任何内容。解决方案是将您的 sf::Font 定义为加载程序 class 的成员,这样应该没问题!
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();
}
}
};
我用这种代码来显示文字和图片
您只是创建了一种超出范围的字体,这是错误的。 sf::Text 引用了 sf::Font,如果它超出范围,这就是您所做的,您的文本将无法显示任何内容。解决方案是将您的 sf::Font 定义为加载程序 class 的成员,这样应该没问题!