2014-01-30 94 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++,當你理解的私人意義,保護和陰部,那麼谷歌封裝原則類友誼。總之,友誼允許一個班級的成員「看到」友好班級的私人成員。我希望這有幫助。

相關問題