Я пытаюсь создать несколько функций, один для настройки анимации, второй для воспроизведения, я могу настроить его, но вторая функция должна получить доступ к первому, чтобы получить некоторые из переменных
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);
};
Не могли бы вы сделать эти переменные членами класса, а не локальными для функции?
например (изменение типа [type] на правильный тип курса):
class fire
{
private:
[type] anmatedsprite;
[type] firesmall;
public:
sf::Clock fireClock;
sf::Texture fireTexture;
void fireSetup(void);
void fireAnim(void);
};
Google о принципах инкапсуляции в C++, когда вы понимаете значение частного, защищенного и лобкового, а затем Google для классовой дружбы. Короче говоря, дружба позволяет членам одного класса "видеть" частных членов дружественного класса. Надеюсь, это поможет.