2012-08-23 26 views
1

in Cocos2d-x, 我想反覆交換sprite的紋理。Cocos2d-x重複替換紋理

我的交換功能低於...

void GameScene::swapSpriteTexture(CCSprite *a, CCTexture2D *b) 
{ 
    CCTexture2D *tmp = a->getTexture(); 
    a->setTexture(b); 
    b = tmp; 
} 

,我調用該函數鏈接纔可此,

this->swapSpriteTexture(aSprite, m_TextureSlot); 

當我打電話交換功能,第一次,效果很好。
精靈的紋理變化很好。
但是當我再次調用函數時,它不會改變。

m_TextureSlot是

m_TextureSlot=(CCTexture2D *)CCTextureCache::sharedTextureCache()->addImage("smile.png"); 

是這個緩存的問題? 任何想法PLZ ...

回答

1

我的錯誤...

我改變了這樣的功能,

void GameScene::swapSpriteTexture(CCSprite *a, CCTexture2D **b) 
{ 
    CCTexture2D *tmp = a->getTexture(); 
    a->setTexture(*b); 
    *b = tmp; 
} 

和我所說的交換功能。

this->swapSpriteTexture(aSprite, &m_TextureSlot); 

然後,它的工作非常出色。 :)

+0

謝謝,它會在未來幫助我。 –

+0

爲什麼這個工作和以前不一樣? – Wajahat

+0

因爲...我們必須改變m_TextureSlot的值,而不是b的值。所以它應該通過引用m_TextureSlot的地址來調用。 –