CCSprite是最常用到的类。它使用图片把精灵(sprite)显示在屏幕上。生成精灵最简单的方法是把图片文件加载进CCTexture2D材质里面,然后将它赋给精灵。你必须把需要用到的图片文件放进Xcode的Resources组中,否则你的应用
17
程序将无法找到指定的图片文件:
CCSprite* sprite = [CCSprite spriteWithFile:@”Default.png”];[self addChild:sprite];
我想问你个问题:你认为这个精灵会被系统放置在屏幕的哪个地方?可能和你想的相反,精灵贴图的中心点和精灵的左下角位置是一致的。生成的精灵被放置在(0,0)点,也就是屏幕的左下角。因为精灵贴图的中心点和精灵的左下角位置一致,导致贴图只能显示一部份(也就是贴图的右边上半部份)。比如,假设图片大小是80x30px,你必须将精灵移动到坐标(40,15)才能将精灵贴图与屏幕的左下角完美对齐,从而看到完整的贴图。
乍看上去这样安排位置很不寻常,不过将贴图的中心点和精灵的左下角位置设
为一致有很大的好处。一旦你开始使用精灵的旋转或缩放属性,精灵的中心点
将会保持在它的位置上。
警告:iOS设备上的文件名是区分大小写的!在模拟器上测试时并不区分大小写。
但是在iOS设备上实际测试时,程序就会因为大小写错误而崩溃。
这个要求导致了很多让开发者头痛的问题,这也是另一个为什么要经常在设备
上做实际测试的原因。为自己确立一个文件命名规则,并且坚持用下去。对我
自己而言,我全部使用小写,词和词之间则用下划线分开。
定位点揭秘每个节点都有一个定位点,但是只有当此节点拥有贴图时,这个定位点才有用。默认情况下,anchorPoint属性设置为(0.5,0.5)或者贴图尺寸的一半。它是一个抽象的因素,一个乘数,而不是一个特定的像素尺寸。
和你想的恰恰相反,定位点和节点的位置没有关系。虽然当你改变anchorPoint属性的时候,你看到精灵在屏幕上的位置发生了变化。但那是错觉,因为节点的位置并没有改变;改变的是精灵里贴图的位置!
anchorPoint定义的是贴图相对于节点位置的偏移。你可以通过把贴图的宽和高乘以定位点来得到贴图的偏移值。顺便提一下,有一个只读的anchorPointPixels属性可以得到贴图的像素偏移值,所以你不需要自己计算。
如果设置anchorPoint为(0,0)的话,你实际上是把贴图的左下角同节点的位置对齐了。以下代码会把精灵图片完美地同屏幕左下角对齐:
CCSprite* sprite = [CCSprite spriteWithFile:@”Default.png”];sprite.anchorPoint = CGPointMake(0, 0);
[self addChild:sprite];
注:如果你在使用别的游戏引擎时,习惯了把所有精灵定位点都设为0,0的话, |
请不要在cocos2d里面这样做。这样做会引起很多麻烦,包括旋转和缩放,父节点和子节点之间的相对位置,还有距离测试和碰撞测试。你要保证anchorPoint |