农产品网站建设计划书,建筑公司需要哪些资质证书,简速做网站,浙江宝业建设集团网站为什么80%的码农都做不了架构师#xff1f; 李华明Himi 原创,转载务必在明显处注明#xff1a; 转载自 【黑米GameDev街区】 原文链接: http://www.himigame.com/iphone-cocos2d/516.html 最近写了不少Cocos2d的博文了#xff0c;那么由于Himi介绍的一般都是… 为什么80%的码农都做不了架构师 李华明Himi 原创,转载务必在明显处注明 转载自 【黑米GameDev街区】 原文链接: http://www.himigame.com/iphone-cocos2d/516.html 最近写了不少Cocos2d的博文了那么由于Himi介绍的一般都是比较容易出错的问题或者比较受到关注的知识点所以不少童鞋要求写个基础篇那么这里Himi就举例最常用的精灵CCSprite来详细的介绍一些吧 考虑到网上对于Cocos2d-iphone的中文教程已有很多所以这里Himi会拿出一些教程没有提到的基础知识点来分享 首先我们来创建一个精灵: CCSprite* sprite [CCSprite spriteWithFile:Icon.png];//初始化
[self addChild:sprite]; //添加入层中 代码很简单传入一张贴图名即可然后添加层中那么这里Himi说几点 1. 精灵除了这个创建函数外还有很多方法最重要的另一个就是利用打包工具打包出来的帧缓存中加载贴图并创建关于打包工具Himi使用的是TP还有其他一些这里不介绍了Himi之前的博文也有对应的介绍 2.精灵默认添加进layer中默认是layer的00点即屏幕的左下角而且精灵的贴图绘制是以精灵的贴图中心点进行渲染的简单说如果精灵贴图大小看成单位一精灵的锚点anchor是0.5,0.5这个是精灵默认锚点当然也可以设置锚点这个锚点的范围是[0,1] 3.大家如果刚接触一门新语言、引擎、框架等就要慢慢找到它们的规律比如在cocos2d中一般创建都是类似的创建方式而初始化的函数基本都是以类名后的一个单词作为开头比如咱们这个CCSprite类它的构造函数就是sprite开头的 OK知道如何创建一个精灵了下面我们来写一点精灵的常用方法和基本位图操作吧 CCSprite* sprite [CCSprite spriteWithFile:Icon.png];//初始化[self addChild:sprite]; //添加入层中sprite.scale2;//放大2倍sprite.rotation90;//旋转90度sprite.opacity255;//设置透明度为完全不透明范围0255sprite.positionccp(100,100);//设置精灵中心点坐标是x100y100[sprite setFlipX:YES];//X轴镜像反转[sprite setFlipY:YES];//Y轴镜像反转[sprite setColor:ccc3(255, 0, 0)];//设置颜色为红色 关于精灵的动作这些N多文章都写过了这里我就不写了没意义我这里给大家再讲解下童鞋们经常纠结的两个问题 1.如何重新设置精灵的z轴覆盖层 对于这个问题很多童鞋无法找到方法的原因主要是因为大家首先想到的是更改精灵的Z轴值的大小Z轴值越大离屏幕越近那么就会错误的使用下面这段代码 sprite.zOrder2; 这句话是不允许使用的错误代码因为精灵的zOrder属性只能可读不可修改;那么Himi提供大家一个解决方法那就是利用布局去重新设置你想设置的精灵的z轴值例如以下代码111.png是我从博客随便截出来的图反正比Icon.png大就可以这样童鞋们就能看得清楚了 //--z值1的精灵CCSprite* sprite [CCSprite spriteWithFile:Icon.png];[self addChild:sprite z:1]; //添加入层中sprite.positionccp(300,200);//设置精灵中心点坐标是x100y100//--z值2的精灵CCSprite* sprite2 [CCSprite spriteWithFile:111.png];[self addChild:sprite2 z:2]; sprite2.positionccp(220,120); 从代码中可以很清晰看到第二个精灵sprite2的z轴大于第一个精灵sprite的z轴值那么sprite2肯定是覆盖sprite上的运行效果图如下 下面我们来利用layer对第一个精灵进行z轴重新设定代码如下 [self reorderChild:sprite z:10]; self: CCLayer sprite: 想要重新设置z轴覆盖层的精灵 z: 想要重新设置z轴覆盖层的精灵的z轴值 OK那么我们重新设置了第一个精灵的z轴值为10这时候精灵1比精灵2的z轴大了1会覆盖2精灵运行效果如下图 2.如何更换已创建的精灵贴图 在上面我介绍了精灵的创建一般有两种:一种是利用帧缓存另一种是直接索引贴图ID进行创建所以呢更换精灵贴图也一般分为两种方法 首先介绍第一种直接利用新建贴图进行更换 实例代码如下 //-----没有换贴图前
CCSprite*sprite [CCSprite spriteWithFile:Icon.png];
sprite.positionccp(150,150);
[self addChild:sprite];
//-----换贴图后
CCSprite*sprite2 [CCSprite spriteWithFile:Icon.png];
sprite2.positionccp(350,150);
[self addChild:sprite2];
//更换贴图
CCTexture2D * texture [[CCTextureCache sharedTextureCache] addImage: Default.png];//新建贴图
[sprite2 setTexture:texture]; 运行效果如下 第二种利用帧替换 //加载帧缓存这个testpngs.plist保存了Icon和111两张图-hd表示高清版本iphone4[[CCSpriteFrameCache sharedSpriteFrameCache] addSpriteFramesWithFile:testpngs-hd.plist];//-----没有换贴图前 CCSprite*sprite [CCSprite spriteWithSpriteFrameName:Icon.png];sprite.positionccp(150,150);[self addChild:sprite];//-----换贴图后CCSprite*sprite2 [CCSprite spriteWithSpriteFrameName:Icon.png];sprite2.positionccp(350,150);[self addChild:sprite2];//更换帧贴图//从帧缓存中取出111.pngCCSpriteFrame* frame2 [[CCSpriteFrameCache sharedSpriteFrameCache] spriteFrameByName:111.png];[sprite2 setDisplayFrame:frame2]; 运行效果如下 -------------下面来介绍如何来利用CCSprite精灵或者CCLayerColor简单实现一个简单的覆盖层遮挡效果 首先利用CCSprite来实现代码如下 CCSprite *sprLeft [CCSprite spriteWithFile:Icon.png];sprLeft.positionccp(100,180);[self addChild:sprLeft];//----创建一个简单的覆盖层//获取当前屏幕宽高CGSize size [[CCDirector sharedDirector]winSize];//创建一个精灵无贴图CCSprite*sprite [CCSprite node];//设置精灵贴图大小全屏幕宽高sprite.textureRectCGRectMake(0, 0, size.width, size.height);sprite.positionccp(size.width*0.5,size.height*0.5);sprite.opacity127;//半透明[0~255]sprite.colorccc3(0, 0, 0);//设置黑色[self addChild:sprite];//----CCSprite* sprRight [CCSprite spriteWithFile:Icon.png];sprRight.positionccp(300,180);[self addChild:sprRight]; 这里我创建了两个精灵一个被覆盖 一个不被覆盖 这样只要让童鞋们看得更清楚 下面利用第二种方式实现 //----CCSprite *sprLeft [CCSprite spriteWithFile:Icon.png];sprLeft.positionccp(100,180);[self addChild:sprLeft];//----创建一个简单的覆盖层//创建一个精灵无贴图CCLayerColor *layer [CCLayerColor layerWithColor:ccc4(0, 0, 0, 127)];[self addChild:layer];//----CCSprite* sprRight [CCSprite spriteWithFile:Icon.png];sprRight.positionccp(300,180);[self addChild:sprRight]; 第二种方法大家可以看到就两句话实现原因这里解释下 第一种设置了贴图大小layer不需要因为layer默认全屏 第一种设置了坐标layer不需要因为layer默认屏幕中心点 第一种设置了透明度和颜色layer也设置了在layer创建的时候创建的在layer创建时传入的四个参数 四个参数分别表示RGBA注意是RGBA不是ARGB因为Himi做过me、Android所以看到设置颜色第一概念就是ARGB。。所以刚接触这里各种郁闷总是效果不是如自己想的。。。 这里补充下RGBA 颜色的三原色红色、绿色、蓝色、透明度 两种实现方式效果都如下图所示 希望童鞋们在初学的时候尽可能的遇到问题按照如下顺序去做首先自己多次尝试-去看源码-百度google-最后请教他人 OK就写到这里!下篇见继续忙了 原文链接 http://blog.csdn.net/xiaominghimi/article/details/6955680 转载于:https://my.oschina.net/liux/blog/49821