Функция нуждается в доступе к переменным в другой функции

0

Я пытаюсь создать несколько функций, один для настройки анимации, второй для воспроизведения, я могу настроить его, но вторая функция должна получить доступ к первому, чтобы получить некоторые из переменных

    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);

};
  • 1
    Откуда взялся animatedSprite? Если он принадлежит вызывающей функции fireAnim (), тогда передайте его в качестве аргумента функции.
  • 1
    Вы можете создать личную переменную класса, которая будет использоваться обеими функциями.
Показать ещё 2 комментария
Теги:
class
function
animation

2 ответа

3

Не могли бы вы сделать эти переменные членами класса, а не локальными для функции?

например (изменение типа [type] на правильный тип курса):

class fire
{
    private: 
        [type] anmatedsprite;
        [type] firesmall;



    public:
        sf::Clock fireClock;
        sf::Texture fireTexture;


    void fireSetup(void);
    void fireAnim(void);

};
1

Google о принципах инкапсуляции в C++, когда вы понимаете значение частного, защищенного и лобкового, а затем Google для классовой дружбы. Короче говоря, дружба позволяет членам одного класса "видеть" частных членов дружественного класса. Надеюсь, это поможет.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню