分享一个我用cocos2d加载图片的方式,其实很简单,我觉得还挺实用的
首先要提醒一点,ihpone开发中所有的图片最好都是png格式的,虽然png格式的图片比jpg或其他的图片要大,但是png的图片在sdk中是做过优化处理的,是苹果推荐的格式,对这个格式支持也是相对好的.尤其是在最新4.2的sdk中,如果你有jpg的图片,并且比较大,在真机上是现实不出来的.
最开始做项目,对cocos2d了解的比较少,添加一个CCSprite时,为了简单,就直接用
CCSprite *sprite = [CCSprite spriteWithFile:@"图片名称"];
如果你是这样用,那就是说图片要通过自动释放机制来完成对加载图片的释放了,那究竟什么时候图片会自动释放掉呢?当然是程序内存快要用尽的时候
- (void)applicationDidReceiveMemoryWarning:(UIApplication *)application {
[[CCTextureCache sharedTextureCache] removeUnusedTextures];
}
看你应用的delegate方法,会有上面一个函数,这个函数就是用来触发什么释放图片的.内存快要到达极限的时候会发出警告告诉上边的方面,然后这个方法就会从cache中释放掉当前不用的图片,
removeUnusedTextures进到这个里面会看到实际上就是释放掉retaincount=1的资源.通过log会发现内存警告是分级别的,
当时1级的时候问题不大,2级的时候就危险了,超过2级程序就完蛋了.而在调用内存警告之前,通过xcode提供内存跟踪工具,会发现图片一直会占着内存.
所以就不要依赖自动释放了,会害了项目的,尤其做游戏,图片比较多,如果用这种方式加载素材,到后期就惨了.我是深有体会.
我是这样做的
CCTexture2D * backBGTexture = [[CCTextureCache sharedTextureCache] addImage:@"a_aboutBG.png"];
CCSprite * backgroundSprite = [[CCSprite alloc] initWithTexture:m_backBGTexture];
[self addChild:backgroundSprite];
[backgroundSprite release];
其实就是手动构建CCsprite这样,在图片不用的时候(一般在dealloc方法中),直接把图片remove掉
-(void)dealloc
{
[[CCTextureCache sharedTextureCache] removeTexture:backBGTexture];
[super dealloc];
}
再通过内存跟踪工具会发现,内存当即被释放掉了.这样场景间切换的时候,就可以把上一个场景的图片全部释放掉.
我就是这样做的.呵呵.
分享到:
相关推荐
也可以使用`cocos2d::TextureCache`的缓存机制来避免重复加载相同的图片数据。 10. **错误处理**:确保在处理网络请求和解码过程中添加适当的错误检查,例如网络超时、数据解析失败等情况,以便提供良好的用户体验...
解密后的数据再通过Cocos2d-x的内置接口进行加载,如`ccs.BoneData::initWithDictionary`对于XML文件,或者`cocos2d::Sprite::createWithSpriteFrameName`对于图片。 在实现过程中,有几个要点需要注意: 1. 安全...
本篇文章将深入探讨cocos2d-x 3.0中实现人物行走的关键技术和步骤,以及如何结合提供的代码和图片资源进行实践。 一、cocos2d-x 3.0简介 cocos2d-x 3.0是cocos2d-x系列的一个重要升级,它基于C++编写,支持跨平台...
在游戏性能方面,Cocos2d-JS提供了优化策略,如批处理渲染、纹理 atlases、预加载资源等,确保游戏在各种设备上运行流畅。同时,其跨平台特性使得开发者一次编写,即可部署到iOS、Android、Web等多个平台,大大节省...
1. **Cocos2d-x架构**:理解Cocos2d-x的组件系统,包括Scene(场景)、Layer(层)、Sprite(精灵)、Node(节点)等,以及它们在游戏中的作用和交互方式。 2. **JavaScript绑定**:Cocos2d-x如何将C++底层库与...
7. **资源管理**:有效管理和加载图片、音频、字体等资源是游戏开发的关键,Cocos2d-x提供了资源管理工具和缓存机制。 8. **网络通信**:对于需要联网的游戏,Cocos2d-x提供了网络模块,可以实现数据的发送和接收。...
《cocos2d-x 3.8:经典游戏引擎源码解析》 cocos2d-x 是一个跨平台的游戏开发框架,它基于C++,同时提供了Lua和JavaScript的绑定,让开发者可以方便地在多种操作系统上创建2D游戏、演示程序和其他图形交互应用。这...
本书会介绍Cocos2d-x的音频API,包括音乐播放、音效处理以及音效资源的加载和管理。 此外,书中还会涉及用户输入处理、触摸事件、键盘事件的响应,以及如何实现游戏的交互功能。对于网络编程,Cocos2d-x提供了网络...
Cocos2d是一款广泛应用于游戏开发、图形界面和2D应用程序的开源框架,它支持多种编程语言,包括Python(cocos2d),Objective-C(cocos2d-objc)以及C++(cocos2d-x)。这篇学习资料是针对cocos2d/x,特别是cocos2d-...
感觉4个人开发游戏真的很累,游戏为了脱颖出更加真实的效果还使用了物理引擎,在老大的同意的情况下,我共享cocos2d自己写的一些大家比较常用的,因为cocos2d有些控件不怎么好用或者没有,反正我觉得是这样的。...
在资源管理方面,Cocos2d-x 3.13.1版本优化了资源加载和释放机制,这有利于减少内存消耗,提高游戏性能。开发者需要确保正确地加载和释放Spine动画资源,避免内存泄漏。此外,考虑到移动设备的性能限制,合理地优化...
9. **资源管理**:使用ResourceManager来加载和管理游戏资源,如图片、音频、字体等。 10. **性能优化**:Cocos2d-x 3.1对内存管理和渲染效率进行了优化,以确保在不同设备上的流畅运行。 11. **脚本支持**:虽然...
《cocos2d-x 动画工具 Flash2Cocos2d-x 1.3:将Flash创意带入移动游戏开发》 在移动游戏开发领域,cocos2d-x是一款广泛使用的开源游戏引擎,以其高效、跨平台的特性深受开发者喜爱。而Flash2Cocos2d-x则是一个专为...
在Cocos2d-x 3.3版本中,开发人员经常需要从网络上加载图片以实现游戏或应用的动态内容展示。本节将详细介绍如何利用Cocos2d-x的API来实现这一功能,特别是异步加载图片的方法,以保证用户界面的流畅性。 首先,...
《cocos2d-x嵌入Webview:游戏与网页交互的深度解析》 在移动游戏开发领域,cocos2d-x作为一个广泛使用的2D游戏引擎,以其高效、跨平台的特性受到众多开发者青睐。然而,游戏往往需要与网页进行交互,以实现动态...
2. 地图拼接:TMX或CSV格式的文件描述了游戏地图的结构,cocos2d-x的TiledMap类可以加载这些文件,动态拼接地图,实现滚动效果。 3. 触摸事件处理:跑酷游戏通常需要响应玩家的触摸操作,如滑动屏幕控制角色移动,...
cocos2d-x提供了TMX格式的瓦片地图支持,可以方便地创建、加载和编辑地图。通过`CCTMXTiledMap`类,开发者可以加载Tiled Map Editor生成的`.tmx`文件,然后利用`getChildByTag()`或`getLayer()`方法获取地图对象,...
5. **资源管理**:Cocos2d-JS 包含了图片、音频、字体等资源的加载和管理功能,支持异步加载,优化了资源的使用效率。 6. **脚本系统**:JavaScript 作为脚本语言,语法简洁,易于学习,且拥有丰富的库和社区支持。...
Cocos2d是一款广泛使用的开源游戏开发框架,尤其在移动端如Android和iOS平台上深受开发者喜爱。这个框架以其高效、易用和跨平台的特性,为游戏开发者提供了强大的工具集,帮助他们快速创建2D游戏、应用程序和交互式...
《cocos2d-x 2.1.4:探索移动游戏开发的新篇章》 cocos2d-x 是一个跨平台的2D游戏开发框架,它为开发者提供了强大的工具和技术支持,使得游戏开发变得更为便捷。2.1.4 版本是这个框架的一个重要里程碑,它在前一...