2012-05-04 20 views

Trả lời

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

Không cần phải thay đổi lớp tùy chỉnh của bạn .. Hy vọng điều này sẽ giúp .. :)

+0

Vâng nó. Nó tao nhã hơn cách tôi dùng để sửa chữa vấn đề của mình. Cảm ơn. – azelez

+0

chấp nhận câu trả lời và đóng nó lại, mọi người sẽ tiếp tục đăng câu trả lời .. :) –

1

tôi phát hiện ra, và tôi để nó ở đây trong trường hợp ai đó bị mắc kẹt với cùng một vấn đề:

Bên trong đối tượng của bạn đó là kế thừa từ đối tượng CCSprite, hãy viết một hàm như sau

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); 
} 
2

Làm việc cho tôi:

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

Trước khi bạn cần phải tải bạn sprites trong bộ nhớ cache:

CCSpriteFrameCache::sharedSpriteFrameCache()->addSpriteFramesWithFile("sprite_atlas.plist"); 
+0

Đối với cocos2d-x 3.x: 'mySprite-> setSpriteFrame (" frame_name ");' –

0

Kể từ khi "CCTextureCache :: sharedTextureCache()" bây giờ bị phản đối (v.3.13.1) bạn nên có được bộ nhớ cache kết cấu từ Giám đốc:

auto texture = Director::getInstance()->getTextureCache()->addImage(filePath); 

if (texture) 
{ 
    yourSprite->setTexture(texture); 
} 

Nguồn: http://www.cocos2d-x.org/wiki/Texture_Cache

Các vấn đề liên quan