代码改变世界

[Cocos2d-x]CCSpriteFrameCache的使用

2013-12-15 22:44  hellenism  阅读(800)  评论(0编辑  收藏  举报

文档:

http://cocos2d.cocoachina.com/document/index/class?url=dc/dda/classcocos2d_1_1_c_c_sprite_frame_cache.html

 

简单描述:

CCSpriteFrameCache提供CCSpriteFrame的缓存,可以使用它创建动画,并且具有较高的效率。

 

使用场景:

需要创建帧动画时,可以使用CCSpriteFrameCache

 

如何使用:

1.把多张图片通过Zwoptex软件(http://zwoptexapp.com/),生成一张png图,并且创建生成对应的plist文件

2.使用plist文件创建CCSpriteFrameCache

 

注意:

1.创建cache时候,如果plist文件与大png图名字不相同,则需要显示指定png图片名

2.卸载场景时候,需要remove添加的plist资源 

 

EX:

    //获取单例CCSpriteFrameCache
    CCSpriteFrameCache* cache = CCSpriteFrameCache::sharedSpriteFrameCache();
    
    //向cache中添加plist文件和对应的大图
    cache->addSpriteFramesWithFile("Jar.plist","Jars.png");
    
    //数组,用于保存使用cache创建的CCSpriteFrame对象,之后用于创建动画
    CCArray* animFrames = CCArray::create();
    char str[100] = {0};
    for(int i = 1; i < 7; i++)
    {
        sprintf(str, "Default_Jar_%d.png", i);
        
        //从CCSpriteFrameCache中获取CCSpriteFrame,用来创建动画
        CCSpriteFrame* frame = cache->spriteFrameByName(str);
        
        animFrames->addObject(frame);
    }
    
    //使用CCSpriteFrame集合创建CCAnimation
    CCAnimation* animation = CCAnimation::createWithSpriteFrames(animFrames, 0.3f);
    m_pFoot = CCSprite::create("Default_Jar_1.png");
    addChild(m_pFoot);
    
    //CCSprite执行动画
    m_pFoot ->runAction(CCRepeatForever::create(CCAnimate::create(animation)));

remove资源:

    
void FirstSprite::onExit()
{
    CCNode:onExit();

    //需要清理cache..
    CCSpriteFrameCache *cache = CCSpriteFrameCache::sharedSpriteFrameCache();
    cache->removeSpriteFramesFromFile("Jar.plist");
}