Cocos2d:纯色矩形雪碧?

pou*_*v23 9 cocos2d-iphone

我肯定错过了什么!

我想创建一个实心矩形CCSprite,背景颜色初始化为特定的RGB值.我查看了整个文档,找不到任何东西.

有没有办法将CCSprite的背景初始化为特定颜色?我不想为每种颜色都包含纯色PNG.

救命!

Mat*_*jan 21

用代码做吧!如果你不想弄乱图像文件,这是你的方法:

- (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;
}
Run Code Online (Sandbox Code Playgroud)

然后,您可以根据需要设置颜色,大小和不透明度.;)


Jus*_*tin 9

CCSprite有一个color类型的属性ccColor3B:

- (ccColor3B) color [read, assign]
RGB colors: conforms to CCRGBAProtocol protocol    

Definition at line 145 of file CCSprite.h.
Run Code Online (Sandbox Code Playgroud)

来源:CCSprite参考.

您可以使用ccc3()以下命令轻松构建ccColor3B结构:

ccc3(const GLubyte r, const GLubyte g, const GLubyte b)
Run Code Online (Sandbox Code Playgroud)

参考:ccColor3B参考.

  • 贾斯汀,谢谢,这就是我正在做的......当然,额外的技巧是正确设置textureRect! (6认同)

Tim*_* Wu 5

我在cocos2d食谱上找到了答案.以下代码源自该书的第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;  
}
Run Code Online (Sandbox Code Playgroud)

是的,这仍然需要外部图像文件.但是使用这个1x1 tiny'black.png',你可以生成任意大小和颜色的纯色矩形精灵.

  • 对于那些外部形象 (2认同)