CCSpriteから継承したオブジェクトがあります。このオブジェクトの内側から画像を変更したいと思います。
Cocos2d-Xで新しいCCSpriteオブジェクトを作成せずに画像(スプライト)を変更するにはどうすればよいですか?
ありがとう、エイドリアン。
mySprite->setTexture(CCTextureCache::sharedTextureCache()->addImage("newImage.png"));
カスタムクラスを変更する必要はありません..これがお役に立てば幸いです..:)
私のために働く:
mySprite->setDisplayFrame(CCSpriteFrameCache::sharedSpriteFrameCache()->spriteFrameByName("frame_name"));
スプライトをキャッシュにロードする必要がある前に:
CCSpriteFrameCache::sharedSpriteFrameCache()->addSpriteFramesWithFile("sprite_atlas.plist");
私は見つけました、そして誰かが同じ問題で立ち往生する場合に備えて私はそれをここに残します:
CCSpriteオブジェクトから継承されたオブジェクト内に、次のように関数を記述します
void MyObject::UpdateImage(Char * PngName)
{
/* Create Image */
CCImage *MyImage = new CCImage();
MyImage->initWithImageFile( PngName ); /*the pngName is an image file in your resource folder */
/* Create Texture from Image */
CCTexture2D *MyTexture = new CCTexture2D();
MyTexture->initWithImage(MyImage);
/* Set the Texture */
this->setTexture(MyTexture);
}
「CCTextureCache::sharedTextureCache()」は非推奨(v.3.13.1)になっているため、Directorからテクスチャキャッシュを取得することをお勧めします。
auto texture = Director::getInstance()->getTextureCache()->addImage(filePath);
if (texture)
{
yourSprite->setTexture(texture);
}
ソース: http: //www.cocos2d-x.org/wiki/Texture_Cache