Cocos2d:纯色矩形精灵?
我一定错过了一些东西!Cocos2d:纯色矩形精灵?
我想创建一个实体矩形CCSprite,其背景色初始化为特定的RGB值。我查看了所有文档,找不到任何内容。
有没有办法将CCSprite的背景初始化为特定的颜色? 我不想为每个需要的颜色都包含纯色PNG。
帮助!
我在cocos2d cookbook找到答案。以下代码源自该书的第一章,该书可免费预览。
-(CCSprite *) rectangleSpriteWithSize:(CGSize)cgsize color:(ccColor3B) c
{
CCSprite *sg = [CCSprite spriteWithFile:@"blank.png"];
[sg setTextureRect:CGRectMake(0, 0, cgsize.width, cgsize.height)];
sg.color = c;
return sg;
}
是的,这仍然需要一个外部图像文件。但是通过这个1x1小小的'blank.png',您可以生成具有任意大小和颜色的纯色矩形精灵。
对于那些外部图像 – 2012-10-28 02:36:05
用代码来做!如果你不想弄乱图像文件,这是你的方法:
- (CCSprite*)blankSpriteWithSize:(CGSize)size
{
CCSprite *sprite = [CCSprite node];
GLubyte *buffer = malloc(sizeof(GLubyte)*4);
for (int i=0;i<4;i++) {buffer[i]=255;}
CCTexture2D *tex = [[CCTexture2D alloc] initWithData:buffer pixelFormat:kCCTexture2DPixelFormat_RGB5A1 pixelsWide:1 pixelsHigh:1 contentSize:size];
[sprite setTexture:tex];
[sprite setTextureRect:CGRectMake(0, 0, size.width, size.height)];
free(buffer);
return sprite;
}
然后,您可以根据需要设置您的颜色,大小和不透明度。 ;)
对于那些使用突变计数器部分(即cocos2d-x)的用户:https://gist.github.com/Mazyod/208e5fb2d7a56290a261 – Mazyod 2014-08-20 07:02:08
我从来没有得到过CCSprite这样的工作。我只是使用CCLayerColor。
CCLayerColor* layercolorHalftransparentred = [CCLayerColor layerWithColor:ccc4(255, 0, 0, 128)];
对于任何人在这个问题上(像我一样)磕磕绊绊;来自Matjan的代码似乎不再适用于cocos 2d 3.x.见下面的改变版本,适用于我:
+ (CCSprite*)blankSpriteWithSize:(CGSize)size
{
GLubyte *buffer = malloc(sizeof(GLubyte)*4);
for (int i=0;i<4;i++) {buffer[i]=255;}
CCTexture *tex = [[CCTexture alloc] initWithData:buffer pixelFormat:CCTexturePixelFormat_RGBA8888 pixelsWide:1 pixelsHigh:1 contentSizeInPixels:size contentScale:1];
CCSprite *sprite = [CCSprite spriteWithTexture:tex rect:CGRectMake(0,0,size.width,size.height)];
free(buffer);
return sprite;
}
贾斯廷,谢谢你是我在做什么...额外的技巧当然是设置textureRect正确! – poundev23 2010-07-29 14:02:31
谢谢@ poundev23,那就是我一直在寻找 – aiham 2011-11-22 08:44:35
小心,这似乎不适用于异步线程。 – GoldenJoe 2013-09-05 00:58:46