【发布时间】:2010-07-27 00:33:28
【问题描述】:
我一定是错过了什么!
我想创建一个实心矩形 CCSprite,其背景颜色已初始化为特定的 RGB 值。我翻遍了所有文档,找不到任何东西。
有没有办法将 CCSprite 的背景初始化为特定颜色? 我不想为我需要的每种颜色都包含一个纯色 PNG。
救命!
【问题讨论】:
标签: cocos2d-iphone
我一定是错过了什么!
我想创建一个实心矩形 CCSprite,其背景颜色已初始化为特定的 RGB 值。我翻遍了所有文档,找不到任何东西。
有没有办法将 CCSprite 的背景初始化为特定颜色? 我不想为我需要的每种颜色都包含一个纯色 PNG。
救命!
【问题讨论】:
标签: cocos2d-iphone
用代码来做!如果您不想弄乱图像文件,这是您的方法:
- (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 cookbook 找到了答案。以下代码来自该书的第 1 章,可免费预览。
-(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”,您可以生成具有任意大小和颜色的纯色矩形精灵。
【讨论】:
我从来没有让 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;
}
【讨论】: