在 class 函数中的 window 上显示纹理和精灵
Display texture and sprite on the window in class function
所以这是我的cpp文件,有这个功能。我注释掉了一些成员因素,因为我觉得它根本没有被阅读,但会包括它们以查看我是否能够使用它们。我的纹理似乎能够出现,但无论我尝试放置它的大小或位置如何,它都没有显示出来。它似乎加载正确,因为我有 if 语句来检查它何时无法加载我想使用的纹理。那么我做错了什么根本没有出现?
//sf::Texture suit::image = suit::setUpTexture();
//
//sf::Texture& suit::setUpTexture()
//{
// image.loadFromFile("Jester.png");
// sf::Sprite sprite;
// sprite.setTexture(image);
//
// return image;
//}
suit::suit()
{
sf::Texture image;
image.loadFromFile("Jester.png");
sf::Sprite sprite;
sprite.setTexture(image);
sf::Sprite::setScale(5,5);
sprite.setPosition(950,950);
if(!image.loadFromFile("Jester.png"))
{
exit(1);
}
}
我的Header
class suit : public sf::Sprite
{
private:
// static sf::Texture image;
// static sf::Texture& setUpTexture();
public:
suit();
};
将纹理链接到 sprite 时,您需要告诉该 sprite 对一个纹理的实际引用。
sprite.setTexture(image&);
使用“&”运算符调用字体地址应该可以解决您的问题。
您还应该通过调用只加载一次图像:
if(!image.loadFromFile("Jester.png"))
{
exit(1);
}
而不是:
image.loadFromFile("Jester.png");
其实看了你的代码我不知道你有没有做到,但是不要忘记使用 draw() 方法绘制你的演员。
所以这是我的cpp文件,有这个功能。我注释掉了一些成员因素,因为我觉得它根本没有被阅读,但会包括它们以查看我是否能够使用它们。我的纹理似乎能够出现,但无论我尝试放置它的大小或位置如何,它都没有显示出来。它似乎加载正确,因为我有 if 语句来检查它何时无法加载我想使用的纹理。那么我做错了什么根本没有出现?
//sf::Texture suit::image = suit::setUpTexture();
//
//sf::Texture& suit::setUpTexture()
//{
// image.loadFromFile("Jester.png");
// sf::Sprite sprite;
// sprite.setTexture(image);
//
// return image;
//}
suit::suit()
{
sf::Texture image;
image.loadFromFile("Jester.png");
sf::Sprite sprite;
sprite.setTexture(image);
sf::Sprite::setScale(5,5);
sprite.setPosition(950,950);
if(!image.loadFromFile("Jester.png"))
{
exit(1);
}
}
我的Header
class suit : public sf::Sprite
{
private:
// static sf::Texture image;
// static sf::Texture& setUpTexture();
public:
suit();
};
将纹理链接到 sprite 时,您需要告诉该 sprite 对一个纹理的实际引用。
sprite.setTexture(image&);
使用“&”运算符调用字体地址应该可以解决您的问题。 您还应该通过调用只加载一次图像:
if(!image.loadFromFile("Jester.png"))
{
exit(1);
}
而不是:
image.loadFromFile("Jester.png");
其实看了你的代码我不知道你有没有做到,但是不要忘记使用 draw() 方法绘制你的演员。