2.如何更换已创建的精灵贴图? 在上面我介绍了精灵的创建一般有两种:一种是利用帧缓存,另一种是直接索引贴图ID进行创建;所以呢更换精灵贴图也一般分为两种方法; 首先介绍第一种直接利用新建贴图进行更换: 实例代码如下: //-----没有换贴图前 CCSprite*sprite =[CCSprite spriteWithFile:@"Icon.png"]; sprite.position=ccp(150,150); [self addChild:sprite]; //-----换贴图后 CCSprite*sprite2 =[CCSprite spriteWithFile:@"Icon.png"]; sprite2.position=ccp(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.position=ccp(150,150); [self addChild:sprite]; //-----换贴图后 CCSprite*sprite2 =[CCSprite spriteWithSpriteFrameName:@"Icon.png"]; sprite2.position=ccp(350,150); [self addChild:sprite2]; //更换帧贴图 //从帧缓存中取出111.png CCSpriteFrame* frame2 = [[CCSpriteFrameCache sharedSpriteFrameCache] spriteFrameByName:@"111.png"]; [sprite2 setDisplayFrame:frame2];
运行效果如下:
-------------下面来介绍如何来利用CCSprite精灵或者CCLayerColor简单实现一个简单的覆盖层(遮挡)效果 首先利用CCSprite来实现,代码如下:
CCSprite *sprLeft = [CCSprite spriteWithFile:@"Icon.png"]; sprLeft.position=ccp(100,180); [self addChild:sprLeft]; //----创建一个简单的覆盖层 //获取当前屏幕宽高 CGSize size =[[CCDirector sharedDirector]winSize]; //创建一个精灵(无贴图) CCSprite*sprite =[CCSprite node]; //设置精灵贴图大小(全屏幕宽高) sprite.textureRect=CGRectMake(0, 0, size.width, size.height); sprite.position=ccp(size.width*0.5,size.height*0.5); sprite.opacity=127;//半透明[0~255] sprite.color=ccc3(0, 0, 0);//设置黑色 [self addChild:sprite]; //---- CCSprite* sprRight = [CCSprite spriteWithFile:@"Icon.png"]; sprRight.position=ccp(300,180); [self addChild:sprRight];
这里我创建了两个精灵一个被覆盖 一个不被覆盖 这样只要让童鞋们看得更清楚~ 下面利用第二种方式实现: //---- CCSprite *sprLeft = [CCSprite spriteWithFile:@"Icon.png"]; sprLeft.position=ccp(100,180); [self addChild:sprLeft]; //----创建一个简单的覆盖层 //创建一个精灵(无贴图) CCLayerColor *layer =[CCLayerColor layerWithColor:ccc4(0, 0, 0, 127)]; [self addChild:layer]; //---- CCSprite* sprRight = [CCSprite spriteWithFile:@"Icon.png"]; sprRight.position=ccp(300,180); [self addChild:sprRight];
第二种方法大家可以看到就两句话实现,原因这里解释下: 第一种设置了贴图大小,layer不需要!因为layer默认全屏; 第一种设置了坐标,layer不需要!因为layer默认屏幕中心点; 第一种设置了透明度和颜色,layer也设置了~在layer创建的时候创建的,在layer创建时传入的四个参数: 四个参数分别表示RGBA!注意是RGBA!!!!不是ARGB!(因为Himi做过me、Android所以看到设置颜色第一概念就是ARGB。。所以刚接触这里各种郁闷,总是效果不是如自己想的。。。) 这里补充下:RGBA 颜色的三原色,红色、绿色、蓝色、透明度! 两种实现方式效果都如下图所示: 希望童鞋们在初学的时候尽可能的遇到问题按照如下顺序去做:首先自己多次尝试->去看源码->百度google->最后请教他人
OK,就写到这里!下篇见~继续忙了; |