cocos2d中的图片使用(CCSpriteBatchNode)
来源:互联网 发布:杨支柱事件知乎 编辑:程序博客网 时间:2024/05/21 10:43
转载自:http://hi.baidu.com/amigoradio/blog/item/10441f0974360598d0581b44.html
最先接触到的是CCSprite,就是一张图片,可以是背景可以是一个按钮图片。如下
CCSprite *bg1 = [CCSprite spriteWithFile:@"bg1.png"];
bg1.anchorPoint = CGPointZero;
bg1.position = CGPointMake(100, 200);
[self addChild:bg1 z:1];
但一个scene中如果有很多的图片将会导致占用很多内存,加载速度变慢。这时候就需要使用CCSpriteBatchNode了,有两个工具可以用来做这个事情
TexturePacker 免费版中会将倒出的图片中加入红色。 拥有zwoptex的90%的功能
zwoptex 7天免费试用 在线版免费但功能少http://zwoptexapp.com/flashversion
谁叫我没钱呢,只好使用zwoptex的在线版生成png图片和plist文件,本来相买TexturePacker的,功能强大用起来很方便,但转换成的pvr.ccz图片不能加载到CCSpriteFrameCache里面,最后也没找到问题原因。但zwoptex的在线版就没有这个问题,下面是代码
CCSpriteBatchNode *s = [CCSpriteBatchNode batchNodeWithFile: @"p.png"];
[self addChild:s z:1];
[[CCSpriteFrameCache sharedSpriteFrameCache] addSpriteFramesWithFile:@"p.plist"];
CCSprite *next = [CCSprite spriteWithSpriteFrameName:@"next.png"];
next.position=ccp(450,600);
[s addChild:next z:1];
但zwoptex不能导出pvr格式的图片,所以使用texturetool工具来转换图片,这个工具是iphone sdk自带的。位于
/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin
我是将这个路径加入到mac的环境变量里面了,这样很多sdk的命令都可以很方便的使用
sudo vim /etc/paths
然后讲sdk的路径加入到paths中就可以,你可以在任何目录输入$texturetool来查看是否添加成功
$texturetool -e PVRTC -o ./p.pvr -f PVR ./p.png
更费劲的来了,因为p.plist文件是zwoptex导出的所以他里面会记着p.png这个图片,但我们现在是pvr了,所以要修改p.plist文件。
根据分析addSpriteFramesWithFile的源码看出来,一种是通过plist里面metadata中的textureFileName来获取图片的,另一种是没有metadata则默认为png。zwoptex则是后一种。所以只好修改成前一种了。TexturePacker输出的是前一种
使用pvr则需要在代码中加入[CCTexture2D PVRImagesHavePremultipliedAlpha:YES];
然后是压缩图片,ccz是怎样压缩出来的我没有找到方法,只好使用gz
$gzip p.pvr
也可以使用 https://github.com/cjhanson/PNGPOTimizer/tree/CCZ 需要自己编译压缩后的大小还是很可观的,pvr文件是37K pvr.gz文件是12K
- cocos2d中的图片使用(CCSpriteBatchNode)
- cocos2d - CCSpriteBatchNode的使用
- cocos2d - CCSpriteBatchNode的使用
- cocos2d - CCSpriteBatchNode的使用
- cocos2d-x中CCSpriteBatchNode使用注意
- cocos2d -x 精灵集合CCSpriteBatchNode的使用
- cocos2d CCSpriteBatchNode 与 CCSprite.
- cocos2d CCSpriteBatchNode的用法
- Cocos2d-x-CCSpriteBatchNode
- CCSpriteBatchNode 的使用
- CCSpriteBatchNode的使用
- CCSpriteBatchNode的作用,使用
- CCSpriteBatchNode使用限制
- iphone游戏开发之cocos2d( 十一 )使用CCSpriteBatchNode和纹理图册,提高精灵动画效率;
- 【爱上cocos2d-x之八】使用CCSpriteBatchNode优化绘制一批相同的精灵
- cocos2d学习笔记(二)CCSpriteBatchNode相关
- cocos2d-x学习笔记(21)--CCSpriteBatchNode
- Cocos2d-x利用CCSpriteBatchNode提高渲染效率
- Spring初步整合hibernate(参照bjsxt视频)
- ParallaxOcclusionMapping( POM ) DX9
- fdisk简介、使用方法、实例解说 linux
- 电视线和分辨率的区别
- microsoft 自动激活服务器kms搭建
- cocos2d中的图片使用(CCSpriteBatchNode)
- gdb命令脚本写法
- 文件选择器JFileChooser的创建
- Math.floor
- GIT入门之二:版本历史/回溯
- 基于对象的程序,求3个长方体的体积及表面积
- 2011.3.6
- .Net System.OutOfMemoryException
- 从10号线(牡丹园)地铁指示台的bug看到程序员背后的工作