主要代码
+(CCRenderTexture *)createStroke:(CCLabelTTF *)label size:(float)size color:(ccColor3B)cor
{
CCRenderTexture* rt = [CCRenderTexture renderTextureWithWidth:label.contentSize.width+size*2 height:label.contentSize.height+size*2];
CGPoint originalPos = [label position];
ccColor3B originalColor = [label color];
BOOL originalVisibility = [label visible];
[label setColor:cor];
[label setVisible:YES];
ccBlendFunc originalBlend = [label blendFunc];
[label setBlendFunc:(ccBlendFunc) { GL_SRC_ALPHA, GL_ONE }];
CGPoint bottomLeft = ccp(label.contentSize.width * label.anchorPoint.x + size, label.contentSize.height * label.anchorPoint.y + size);
CGPoint positionOffset = ccp(label.contentSize.width * label.anchorPoint.x – label.contentSize.width/2,label.contentSize.height * label.anchorPoint.y – label.contentSize.height/2);
CGPoint position = ccpSub(originalPos, positionOffset);
[rt begin];
for (int i=0; i<360; i+=30) // you should optimize that for your needs
{
[label setPosition:ccp(bottomLeft.x + sin(CC_DEGREES_TO_RADIANS(i))*size, bottomLeft.y + cos(CC_DEGREES_TO_RADIANS(i))*size)];
[label visit];
}
[rt end];
[label setPosition:originalPos];
[label setColor:originalColor];
[label setBlendFunc:originalBlend];
[label setVisible:originalVisibility];
[rt setPosition:position];
return rt;
}
CCLabel* label = [CCLabel labelWithString: @"Some Text"
dimensions:CGSizeMake(305,179) alignment:UITextAlignmentLeft
fontName:@"SomeFont" fontSize:23];
[label setPosition:ccp(167,150)];
[label setColor:ccWHITE];
CCRenderTexture* stroke = [SomeUtilityClass createStroke:label size:3 color:ccBLACK];
[self addChild:stroke];
[self addChild:label];
参考自(更多CCMenuItem描边):
http://www.cocos2d-iphone.org/forum/topic/12126