这可能听起来像是一个愚蠢的问题......
我在C ++中有这段代码,它使用SFML库:
#include <SFML/Graphics.hpp>
#include <string>
void textDisplay(sf::Text& display_text, std::string display_str, sf::Font display_font, int char_size) {
display_text.setString(display_str);
display_text.setFont(display_font);
display_text.setCharacterSize(char_size);
display_text.setStyle(sf::Text::Regular);
}
int main() {
sf::RenderWindow window(sf::VideoMode(400, 400), "Game");
sf::Font arial;
if (!arial.loadFromFile("fonts/arial/arial.ttf")) {
return 0;
}
sf::Text text;
textDisplay(text, "Hello, World!", arial, 30);
sf::CircleShape shape(100.f, 10);
shape.setFillColor(sf::Color::Yellow);
while (window.isOpen()) {
sf::Event event;
while (window.pollEvent(event)) {
if (event.type == sf::Event::Closed) {
window.close();
}
}
window.clear();
window.draw(text);
window.display();
}
return 0;
}
因为当我试图将文本显示在SFML屏幕上而不是重复代码时,我会一遍又一遍地重复相同的四行代码,因此我创建了一个函数({{ 1}})它接受四个参数(textDisplay
对象本身,一个字符串,一个字体和字符大小)并为我初始化Text
对象。
出于某种原因,文字没有显示 - 有什么我做错了吗?
有些东西:
Text
。window
上没有任何文字。如果错误与函数本身有关,你能否建议一遍又一遍地输入相同的四行?
答案 0 :(得分:2)
找到它,你用临时字体设置文本,因为它是一个普通变量,而不是一个引用/指针:
void textDisplay(sf::Text& display_text, std::string display_str, sf::Font& display_font, int char_size) { //Just make it a reference and its done! :)
display_text.setString(display_str);
display_text.setFont(display_font);
display_text.setCharacterSize(char_size);
display_text.setStyle(sf::Text::Regular);
}