在cocos2d-x中,如何更改sprite使用的png?更改sprite使用的精靈
下面的工作,但它似乎有點longwinded,我想知道是否有一個替代品,防止我不得不打電話new
?
// create sprite with original png
m_pSpr = CCSprite::create("1.png");
m_pSpr->setPosition(ccp(100, 100));
this->addChild(m_pSpr);
// now change the png that is used by the sprite
// new image from png file
CCImage* img = new CCImage();
img->initWithImageFile("2.png", CCImage::kFmtPng);
// new texture from image
CCTexture2D* tex = new CCTexture2D();
tex->initWithImage(img);
// finally change texture of sprite
m_pSpr->setTexture(tex);
工作正常,這是否意味着它加載實際spritesheet進入內存只有一次,然後如果我使用2.png,就像你演示的那樣,它只會進入已經存在於內存中的spritesheet的紋理,因此它不需要再次從磁盤讀取文件?因此,如果我說,多次交換1和2,它將永遠不需要從磁盤重新讀取它們中的任何一個(如果我還將1.png的調用更改爲spriteFrameByName? – Ben
是的,紋理將被加載到內存只有一次,所有的精靈都在內部使用精靈幀,所有的精靈幀都有指向內存紋理的指針,幾個精靈將使用相同的紋理。 – Morion