`
fireDragonpzy
  • 浏览: 466510 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

两个cache:CCTextureCache、CCSpriteFrameCache的使用

阅读更多
本文为firedragonpzy原创,转载务必在明显处注明:
转载自【Softeware MyZone】原文链接: http://www.firedragonpzy.com.cn/index.php/archives/312


注意cache的使用:
1、CCSpriteFrameCache使用:
CCSpriteFrameCache* cache = CCSpriteFrameCache::sharedSpriteFrameCache();
    cache->addSpriteFramesWithFile("animations/grossini.plist");
在离开的时候:
void SpriteFrameTest::onExit()
{
    SpriteTestDemo::onExit();
    CCSpriteFrameCache *cache = CCSpriteFrameCache::sharedSpriteFrameCache();
    cache->removeSpriteFramesFromFile("animations/grossini.plist");
或者:CCSpriteFrameCache::sharedSpriteFrameCache()->removeUnusedSpriteFrames();
}
大家先看看sharedSpriteFrameCache的源码:
CCSpriteFrameCache* CCSpriteFrameCache::sharedSpriteFrameCache(void)
{
	if (! pSharedSpriteFrameCache)
	{
		pSharedSpriteFrameCache = new CCSpriteFrameCache();
        pSharedSpriteFrameCache->init();
	}

	return pSharedSpriteFrameCache;
}
CCSpriteFrameCache::~CCSpriteFrameCache(void)
{
	CC_SAFE_RELEASE(m_pSpriteFrames);
	CC_SAFE_RELEASE(m_pSpriteFramesAliases);

}

并没有autorelease,不会持有,当一释放的时候就会被删除

2、CCTextureCache使用:
SpriteNewTexture::SpriteNewTexture()
{
    setIsTouchEnabled( true );
    
    CCNode* node = CCNode::node();
    addChild(node, 0, kTagSpriteBatchNode);

    m_texture1 = CCTextureCache::sharedTextureCache()->addImage("Images/grossini_dance_atlas.png");
    m_texture1->retain();
    m_texture2 = CCTextureCache::sharedTextureCache()->addImage("Images/grossini_dance_atlas-mono.png");
    m_texture2->retain();
    
    m_usingTexture1 = true;

    for(int i=0;i<30;i++)
        addNewSprite();
}

SpriteNewTexture::~SpriteNewTexture()
{
    m_texture1->release();
    m_texture2->release();
}

大家先看看sharedTextureCache的源码:
CCTextureCache * CCTextureCache::sharedTextureCache()
{
	if (!g_sharedTextureCache)
		g_sharedTextureCache = new CCTextureCache();

	return g_sharedTextureCache;
}


CCTextureCache::~CCTextureCache()
{
	CCLOGINFO("cocos2d: deallocing CCTextureCache.");

	CC_SAFE_RELEASE(m_pTextures);
}
也是没有autorelease,不会持有,当一释放的时候就会被删除,若想持有,按照上述例子retain和release
分享到:
评论

相关推荐

    cocos2d-x学习笔记(14)--CCTextureCache .rar

    在cocos2d-x这个强大的2D游戏开发框架中,CCTextureCache是图像资源管理的核心组件,它负责加载、缓存和管理纹理。本文将深入探讨CCTextureCache的工作原理及其在实际开发中的应用。 CCTextureCache是cocos2d-x中的...

    Sprite_Sheet_Animation:在cocos2dx for android平台使用精灵表创建动画

    1. 加载精灵表:使用` CCTextureCache::sharedTextureCache()-&gt;addImage()` 加载精灵表图片文件。 2. 获取精灵帧:通过` CCSpriteFrameCache::sharedSpriteFrameCache()-&gt;addSpriteFramesWithFile()` 添加精灵帧信息...

    Cocos2d-x初入学堂--&gt;CCSprite基本处理(2)工程

    资源通常以.png或.jpeg格式存储,可以使用` CCTextureCache::sharedTextureCache()-&gt;addImage("your_image_path.png") `加载到纹理缓存中。然后,通过` CCSprite::createWithTexture(texture) `创建精灵对象,其中`...

    cocos2d-x的粒子创建

    texture=CCTextureCache::sharedTextureCache()-&gt;addImage("bj01.png"); back=CCSprite::createWithTexture(texture); back-&gt;setPosition(ccp(size.width/2,size.height/2)); this-&gt;addChild(back,0); //加载...

    学习Cocos2d-X

    Cocos2d-X 提供了 CCTextureCache 和 CCSpriteFrameCache 来管理和缓存纹理资源。CCTextureCache 可以加载并存储纹理,减少内存占用,而 CCSpriteFrameCache 用于管理精灵帧,尤其在动画中起到关键作用。例如,代码...

    cocos2d-x学习笔记(16)--spritesheet(精灵表单).rar

    2. **加载Spritesheet**:在cocos2d-x代码中,使用` CCTextureCache::getInstance()-&gt;addImage()` 加载图片文件,然后用` CCSpriteFrameCache::getInstance()-&gt;addSpriteFramesWithFile()`加载.atlas文件,这会将...

    剖析iOS开发中Cocos2d-x的内存管理相关操作

    需要注意释放的时机,避免在两个场景资源重叠时引发问题,例如在使用过渡效果时。 此外,强制释放全部资源可能导致正在执行的动画失去引用,产生异常。此时,可以使用CCActionManager的sharedManager()-&gt;...

    Sanxiao游戏

    2. **碰撞检测**:当用户点击或交换两个元素时,需要检测它们是否满足消除条件(通常为三个相同元素相邻)。 3. **元素动画**:消除元素时,会有炫酷的动画效果,这通常通过改变元素的位置、颜色、透明度等属性实现...

    cocos2d_api_0.99.zip

    3. **CCSpriteFrameCache**: 管理精灵帧缓存,用于优化大量精灵的加载和使用。 4. **CCLabel**: 提供文本显示功能,支持TTF字体和Bitmap Font。 5. **CCTextureCache**: 缓存纹理,提高图像加载速度,减少内存开销...

    cocos2d文件操作

    6. **缓存机制**:为了提高性能,Cocos2d有内置的缓存系统,如纹理缓存(` CCTextureCache`)和精灵帧缓存(`CCSpriteFrameCache`)。它们负责加载和缓存资源,避免重复加载相同的文件。 7. **流式I/O**:在处理...

    第6章-深入了解精灵(Sprite)

    通过使用`CCSpriteBatchNode`,可以一次性渲染多个使用相同纹理的精灵,从而减少渲染调用次数,提升帧率。 #### 创建和使用精灵 - **创建精灵**:最简单的方式是使用`CCSprite *sprite = [CCSprite spriteWithFile...

    Last Stand代码

    开发者需要使用Cocos2d-x提供的API来加载和管理这些资源,例如`CCSprite::create()`用于创建精灵,`CCTextureCache::addImage()`用于加载图像,`CCTouchDispatcher`来处理触摸事件等。 2. Classes文件夹: 这个...

    cocos2dx 3.0rc 2048

    当两个相同数字的格子相遇时,它们会合并,数字相加,并创建新的格子。 此外,cocos2dx的动画系统也是实现2048游戏动态效果的关键。通过创建动作(CCAction)和动作序列,可以轻松实现格子的平滑移动、数字的淡入...

    cocos2d面向对象打地鼠

    在打地鼠游戏中,Scene可能包含两个Layer:一个是背景Layer,用于显示游戏场地;另一个是交互Layer,负责处理地鼠的出现和玩家的打击。Sprite则可以用来表示地鼠、锤子和其他游戏元素。 接下来,我们讨论面向对象的...

    cocos 2d 小游戏 打砖块

    Cocos2d提供资源加载器,如`CCSpriteFrameCache`和`CCTextureCache`,便于管理和复用资源。 8. **界面设计**:游戏界面通常包括得分显示、生命值、暂停按钮等元素。这些可以通过Cocos2d的UI组件如`CCLabel`、`...

    Cocos2d-x 贪吃蛇源码(3.6)

    在Cocos2d-x中,资源管理是通过加载器类来实现的,例如CCSpriteFrameCache用于管理精灵帧,CCTextureCache用于管理纹理。 2. **Classes**:这个目录下存放的是游戏的核心代码,包括各种场景(Scene)、层(Layer)...

    cocos2d-x 别踩白块源码

    Cocos2d-x提供了资源加载器,如`CCSpriteFrameCache`(精灵帧缓存)和`CCTextureCache`(纹理缓存),用于高效地管理和加载资源。 6. **动画**:游戏中可能会用到动画效果,如方块的出现和消失,这些可以通过`...

    cocos2d-x 2.2 api

    这个"2.2 API"是针对Cocos2d-x 2.2版本的开发者文档,由doxygen生成,包含了详细的类、方法、函数以及其他编程接口的描述,方便开发者理解和使用Cocos2d-x的功能。 Cocos2d-x 2.2 API的核心知识点包括以下几个方面...

    cocosx消灭星星小游戏

    Cocos引擎提供了CCSpriteFrameCache和CCTextureCache等类,用于高效地加载和缓存资源,确保游戏运行流畅。 5. **用户界面(UI)**:游戏菜单、分数显示、提示信息等都是UI的一部分。Cocos引擎提供了一个强大的UI...

    第3章-基础知识

    - `CCSpriteFrameCache` & `CCTextureCache`: 缓存精灵帧和纹理,提高加载效率。 - `CCTouchDispatcher`: 处理触摸事件,分发给适当接收者。 - `CDAudioManager` & `SimpleAudioEngine`: 管理音频播放和音效。 ####...

Global site tag (gtag.js) - Google Analytics