2014-01-30 95 views
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需要知道什么animatedSpritefireSmall是,但我无法弄清楚如何做到这一点的功能。

如果任何使用我的头类是以下

class fire 
{ 
private: 


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


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

}; 
+1

animatedSprite应该从哪里来?如果它由fireAnim()的调用者拥有,则将其作为参数传递给该函数。 – Joky

+1

您可以创建一个由两个函数共享的私有类变量。 –

+0

我的目标是设置精灵,如框架和纹理等,然后循环动画,如果我使它成为一个函数,那么我的while循环将继续循环通过精灵设置,我会假设意味着不断加载相同的纹理等一遍又一遍。对不起,如果这看起来很愚蠢,即时通讯在学习阶段C++ – Mystic

回答

3

你能不能做之类的那些成员变量,而不是局部的功能?

例如(改变[类型]为正确的类型当然):

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



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


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

}; 
1

谷歌关于C++,当你理解的私人意义,保护和阴部,那么谷歌封装原则类友谊。总之,友谊允许一个班级的成员“看到”友好班级的私人成员。我希望这有帮助。

相关问题