我试图创建一些函数,一个用于设置动画,第二个用于播放它,我可以将其设置为find但第二个函数需要访问第一个才能获得一些变量
void fire::fireSetup(void)
{
fireTexture.loadFromFile("firesprite.png");
Animation fireSmall;
fireSmall.setSpriteSheet(fireTexture);
fireSmall.addFrame(sf::IntRect(64, 0, 64, 64));
fireSmall.addFrame(sf::IntRect(128, 0, 64, 64));
fireSmall.addFrame(sf::IntRect(192, 0, 64, 64));
fireSmall.addFrame(sf::IntRect(0, 0, 64, 64));
AnimatedSprite animatedSprite(sf::seconds(0.1), false, true);
animatedSprite.setPosition(sf::Vector2f(300,300));
}
void fire::fireAnim(void)
{
sf::Time frameTime = fireClock.restart();
animatedSprite.play(fireSmall);
animatedSprite.update(frameTime);
window.mywindow.draw(animatedSprite);
}
你可以看到函数fireAnim
需要知道animatedSprite
和fireSmall
是什么,但我无法弄清楚如何去做。
如果它的任何用途我的头类是以下
class fire
{
private:
public:
sf::Clock fireClock;
sf::Texture fireTexture;
void fireSetup(void);
void fireAnim(void);
};
答案 0 :(得分:3)
你能让这些变量成为该类的成员而不是函数的本地成员吗?
e.g。 (将[类型]更改为正确类型的课程):
class fire
{
private:
[type] anmatedsprite;
[type] firesmall;
public:
sf::Clock fireClock;
sf::Texture fireTexture;
void fireSetup(void);
void fireAnim(void);
};
答案 1 :(得分:1)
谷歌关于C ++中的封装原则,当你理解私有,受保护和耻辱的意义,然后谷歌的友谊。简而言之,友谊允许一个班级的成员“看到”友好阶层的私人成员。我希望这会有所帮助。