最近在学习iphone上的游戏开发,自已觉得有一个工具之后,好像并不是那么难学。这里有一些加载图片方面的经验跟和我一样的初学者分享一下。希望大家都能很快的成为高手。
在iphone的cocos2d开发中的图片,现在好像有很多种格式,但是我只用了两种在这里最常用的格式,一种是"*.png"格式,另一种是".pvr ”格式的,还有对pvr格式压缩后的.pvr.ccz的。pvr是iphone中所使用的图形处理器使用的图片格式,所以使用这个格式的好处是读取和显示速度很快(网上好像是这么说的)。
下边说正题,也就是图片在cocos2d中加载的问题:
第一种,我们就先说说加载一片单独的图片要怎么加载,比如你现在手上有一个图片background.png的图片,图片不要太大,大了iphone不吃。
我们使用以下方法可以正常加载:
在加载background.png之前把这张图片加入你的项目文件中。然后再使用以下代码:
CCSprite *bg = [CCSprite spriteWithFile:@"background.png"];
[bg setPosition:ccp(160, 240)];
[self addChild:bg z:0];
如果是加载.pvr格式的图片,只要把上边代码中的名字换成.pvr的图片就行了,但是不要忘了,也要把这个pvr格式的图片加入项目文件中。
第二种情况,就是我们常常看到有人所说的的,使用工具把所有游戏中用到的精灵图片一次全载入内存,并且加入精灵表文件.plist的方法。这种情况,主要是把精灵表加入之后我们要如何在所有类中轻松的使用这张大图上的各个精灵。
这两个代码好像放在那里都行,我是放在了程序加载完成的那个代理对象中的。然后,我们就在第一个CCScene类的初始化中加载那张大图到缓存中,并将其加为场景的一个孩子。代码如下:
CCSpriteBatchNode *batch_ = [CCSpriteBatchNode batchNodeWithFile:@"boom.png"];
//pvr图片要在名字后加_pvr要不然出错,我也不知道为什么
[[CCSpriteFrameCache sharedSpriteFrameCache] addSpriteFramesWithFile:@"boom.plist"];
[self addChild:batch_];
上边代码中的第二个方法就是加载大图的小精灵表,在这个表中有各个小精灵在大图中的位置和大小。
大图片加载后,我们使用时只要使用以下方法就可以使用我们的图片了,如果在别的类中加载小精灵,我们只要使用精灵表中有的图片名称就行,如果加载的图片不在大图中,那么就会报错。
CCSprite *bg = [CCSprite spriteWithSpriteFrameName:@"sprite_1.png"];
[bg setPosition:ccp(160,240)]; //设置精灵加载后坐标
[self addChild:bg z:0]; //将bg图片加入场景
在图片加载的时候还有一个问题,就是对于不同分辨率的图片,cocos2d是怎么处理的,在xcode中,如果你要怎么用高清图片和普清图片,你要