尝试传递 sf::Image 具有类的参数

Trying to pass a sf::Image has a parameter for a class

本文关键字:参数 Image sf      更新时间:2023-10-16

所以,我试图在SFML中创建一个吃豆人游戏,我为我的鬼魂创建了一个名为fant的类,im 试图传递 sf::Image 在我的类中有一个参数,但似乎我得到了一个没有值的变量,因为它加载了一个空白图像,但它具有与 im 尝试加载的图像相同的大小(18x18 像素)。

我的班级是

class fant {
public:
    void SetX(int i);
    int GetX();
    void SetY(int i);
    int GetY();
    void SetDX(int i);
    int GetDX();
    void SetDY(int i);
    int GetDY();
    void Sprite(sf::Sprite i);
    sf::Sprite GetSprite();
    void Image(sf::Image i);
protected:
    int posx,posy,dirx,diry;
    sf::Sprite sprite;
};
void fant::SetX(int i) { posx=i; sprite.SetX(posx); }
void fant::SetY(int i) { posy=i; sprite.SetY(posy); }
void fant::SetDX(int i) { dirx=i; }
void fant::SetDY(int i) { diry=i; }
void fant::Sprite(sf::Sprite i) { sprite=i; }
void fant::Image(sf::Image i) { sprite.SetImage(i); }
sf::Sprite fant::GetSprite() { return sprite; }
int fant::GetX() { return posx; }
int fant::GetY() { return posy; }
int fant::GetDX() { return dirx; }
int fant::GetDY() { return diry; }

这是一个创建新对象的函数

void addf() {
    fa.push_back(fant());
    int t=fa.size()-1;
    fa[t].SetX(684); fa[t].SetY(18);
    fa[t].Image(f1);
    fa[t].SetDX(6);
    fa[t].SetDY(0);
}

如果我使用

void fant::Image(sf::Image i) { sprite.SetImage(f1); }

它设置"F1"图像。(全球sf::图片)

class fant {
public:
sf::Sprite GetSprite()
{
   return sprite;
}
void LoadImage(std::string path);
protected:
int posx,posy,dirx,diry;
sf::Sprite sprite;
sf::Image image;
};

void fant::LoadImage(std::string path)
{
   image.LoadFromFile(path.c_str());
   sprite.SetImage(image);
}