CCSPrite


一、精灵创建及初始化

1、从图片文件创建:
CCSprite *s = [CCSprite spriteWithFile:@"Icon.png"];
默认锚点 ccp(0.5,0.5)
默认位置 ccp(0,0)
CCSprite尺寸(contentSize)为图片尺寸

也可以只加载图片的一部分:
CCSprite *s = [CCSprite spriteWithFile:@"Icon.png" rect:CGRectMake(x,y,w,h)];

2、从帧缓存创建:
[[CCSpriteFrameCache sharedSpriteFrameCache] addSpriteFramesWithFile:@"MineSweeping.plist"]; 
CCSprite *sprite = [CCSprite spriteWithSpriteFrameName:@"Icon.png"]; 

3、初始化及自定义大小
CCSprite *sprite = [CCSprite spriteWithFile:@"Icon.png" rect:CGRectMake(x,y,w,h)]; 
备注:默认锚点ccp(0.5,0.5),默认位置 ccp(0,0),contentSize为精灵图片尺寸

 


CCSprite继承自CCNode,所以你可以对它进行 addChild的操作:
[self addChild:s];


缩放CCSprite的尺寸,参数为比例,1保持不变,0.5代表50%,2代表200%:
[s setScale:1];


获得CCSprite的层叠次序,次序小的在下面,大的在上面:
[s zOrder];


可以设置CCSprite(图片)的颜色:
[s setColor:ccc3(r,g,b)];


隐藏CCSprite:
[s setVisible:NO];

 

二、精灵常用属性及方法:

CCSprite继承自CCNode,所以你可以对它进行 addChild的操作:
1.[self addChild:sprite]; //添加入层中,self为CCLayer
    
2.sprite.scale=2;//放大2倍,参数为比例,1保持不变,0.5代表50%,2代表200%    

3.sprite.rotation=90;//旋转90度     

4.sprite.opacity=255;//设置透明度为完全不透明(范围0~255) 

5.sprite.anchorPoint=ccp(0,0);//设置锚点为左下角,默认为ccp(0.5,0.5)中心点  

6.sprite.position=ccp(100,100);//设置精灵左下角坐标是x=100,y=100,本地GL坐标系   
 
7.[sprite setFlipX:YES];//X轴镜像反转  
 
8.[sprite setFlipY:YES];//Y轴镜像反转   

9.[sprite setVisible:NO];//设置隐藏,默认为可见   

10.[sprite setColor:ccc3(255, 0, 0)];//设置颜色为红色,三原色  

11.[sprite zOrder]; //精灵层叠次序即Z轴(小的在下面,大的在上面),注意这是只读属性,不能通过sprite.zOrder=2实现Z轴重设    

12.[sprite setTextureRect:CGRectMake(10, 10, 30, 30)];//起始点坐标(做上角坐标系),宽高   

13.缩放CCSprite的尺寸,参数为比例,1保持不变,0.5代表50%,2代表200%:
[s setScale:1];

14.缩放X setScaleX  

 

三、添加其他精灵
CCSprite继承自CCNode,所以你可以对它进行addChild的操作:

CCSprite *s1 = [CCSprite spriteWithFile:@"Icon.png"]; 
CCSprite *s2 = [CCSprite spriteWithFile:@"Icon.png"];  3.[s1 addChild:s2]; 


四、精灵Z轴重设
1.[self reorderChild:sprite z:10];//self为CCLayer 


五、精灵换图
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 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得到的效果提升就越大

 
移除Sprite:
-(void)spriteMoveFinished:(id)sender {

CCSprite *sprite = (CCSprite *)sender;

[self removeChild:sprite cleanup:YES];

}


 

posted @ 2013-05-27 13:43  六界剑仙  阅读(177)  评论(0)    收藏  举报