10

CCSpriteから継承したオブジェクトがあります。このオブジェクトの内側から画像を変更したいと思います。

Cocos2d-Xで新しいCCSpriteオブジェクトを作成せずに画像(スプライト)を変更するにはどうすればよいですか?

ありがとう、エイドリアン。

4

4 に答える 4

12
mySprite->setTexture(CCTextureCache::sharedTextureCache()->addImage("newImage.png"));

カスタムクラスを変更する必要はありません..これがお役に立てば幸いです..:)

于 2012-05-05T09:45:11.090 に答える
2

私のために働く:

mySprite->setDisplayFrame(CCSpriteFrameCache::sharedSpriteFrameCache()->spriteFrameByName("frame_name"));

スプライトをキャッシュにロードする必要がある前に:

CCSpriteFrameCache::sharedSpriteFrameCache()->addSpriteFramesWithFile("sprite_atlas.plist");
于 2014-07-23T07:26:03.860 に答える
1

私は見つけました、そして誰かが同じ問題で立ち往生する場合に備えて私はそれをここに残します:

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);
}
于 2012-05-04T21:24:45.830 に答える
0

「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

于 2016-11-21T03:12:12.607 に答える