一、精靈建立及初始化
1、從圖片檔案建立:
CCSprite *sprite = [CCSprite spriteWithFile:@"ImageFileName.png"];
預設錨點 ccp(0.5,0.5),
預設位置 ccp(0,0),
CCSprite尺寸(contentSize)為圖片尺寸
2、從幀緩衝建立:
[[CCSpriteFrameCache sharedSpriteFrameCache] addSpriteFramesWithFile:@"MineSweeping.plist"];
CCSprite *sprite = [CCSprite spriteWithSpriteFrameName:@"ImageFileName.png"];
3、初始化及自訂大小
CCSprite *sprite = [CCSprite spriteWithFile:@"ImageFileName.png" rect:CGRectMake(x,y,w,h)];
只顯示圖片的一部分,大小為 w,h
iOS裝置的貼圖尺寸必須符合“2的n次方” 規定,所以貼圖的寬和高必須是2,4,8,16,32,64,128,256,512,1024. 在第三代裝置上可以達到2048像素
二、精靈常用屬性及方法:
添加子節點,CCSprite繼承自CCNode,可以進行addChild的操作
[self addChild:sprite];
設定CCSprite位置,本地GL座標系,
sprite.position 是指精靈的中心點在gl繫上的位置
[s setPosition:ccp(x,y)];
sprite.position=ccp(100,100);//設定精靈左下角座標是x=100,y=100,本地GL座標系
縮放 (參數為比例,1保持不變,0.5代表50%,2代表200%)
sprite.scale=2;//放大2倍
旋轉
sprite.rotation=90;//旋轉90度
設定透明度 (範圍0~255)
sprite.opacity=255;//設定透明度為完全不透明(範圍0~255)
設定CCSprite錨點,左下角:
sprite.anchorPoint=ccp(0,0);//設定錨點為左下角,預設為ccp(0.5,0.5)中心點
開啟CCSprite鏡像
[sprite setFlipX:YES];//X軸鏡像反轉
[sprite setFlipY:YES];//Y軸鏡像反轉
是否可見
[sprite setVisible:NO];//設定隱藏,預設為可見
設定CCSprite(圖片)的顏色
[sprite setColor:ccc3(255, 0, 0)];//設定顏色為紅色,三原色
CCSprite的層疊次序 (次序小的在下面,大的在上面)
[sprite zOrder]; //精靈層疊次序即Z軸(小的在下面,大的在上面),注意這是唯讀屬性,不能通過sprite.zOrder=2實現Z軸重設
設定紋理大小
[sprite setTextureRect:CGRectMake(10, 10, 30, 30)];//起始點座標(做上角座標系),寬高
三、添加其他精靈
CCSprite繼承自CCNode,所以你可以對它進行addChild的操作:
CCSprite *s1 = [CCSprite spriteWithFile:@"Icon.png"];
CCSprite *s2 = [CCSprite spriteWithFile:@"Icon.png"];
[s1 addChild:s2];
四、精靈Z軸重設
[self reorderChild:sprite z:10];//self為CCLayer或者CCNode
五、精靈換圖
1、直接利用建立貼圖進行更換
//更換貼圖
CCTexture2D * texture =[[CCTextureCache sharedTextureCache] addImage: @"Default.png"];//建立貼圖
[sprite setTexture:texture];
2、利用幀替換
//載入幀緩衝
[[CCSpriteFrameCache sharedSpriteFrameCache] addSpriteFramesWithFile:@"MineSweeping.plist"];
//從幀緩衝中取出Default.png
CCSpriteFrame* frame2 = [[CCSpriteFrameCache sharedSpriteFrameCache] spriteFrameByName:@"Default.png"];
[sprite setDisplayFrame:frame2];
六、移除Sprite:
-(void)spriteMoveFinished:(id)sender {
CCSprite *sprite = (CCSprite *)sender;
[self removeChild:sprite cleanup:YES];
}
七、精靈批處理(Sprite Batching):
建立多個CCSprite節點,將它們添加到同一個CCSpriteBatchNode中以提高渲染速度
CCSpriteBatchNode* batch = [CCSpriteBatchNode batchNodeWithFile:@"bullet.png"];
[self addChild:batch];
for (int i = 0; i < 100; i++)
{
CCSprite* sprite = [CCSprite spriteWithFile:@"bullet.png"];
[batch addChild:bullet];
}
CCSprite* sprite = [CCSprite spriteWithFile:@"bullet.png"];
[batch addChild:bullet];
什麼時候應該使用CCSpriteBatchNode
當你需要顯示兩個或者更多個相同的CCSprite節點時,你可以使用CCSpriteBatchNode。組合在一起的CCSprite節點越多,使用 CCSpriteBatchNode得到的效果提升就越大