您的位置:首页 > 其它

如何不用图片绘制图形精灵

2013-01-10 12:17 513 查看
我们有时常常需要一些圆形或者方形的背景,来修饰其他精灵,而专门画张图片又有点麻烦,这时就需要自己用程序来绘制了。

最常见的两种:

方形精灵

-(CCSprite*) createSpriteRectangleWithSize:(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;
}


圆形精灵

-(CCSprite*) createSpriteCircleWithRadius:(float)radius
{

CGSize circleSize = CGSizeMake(radius*2*CC_CONTENT_SCALE_FACTOR(), radius*2*CC_CONTENT_SCALE_FACTOR());
CGContextRef context = CGBitmapContextCreate(NULL, circleSize.width, circleSize.height, 8, 0,CGColorSpaceCreateDeviceRGB(), kCGImageAlphaPremultipliedLast);
float lengths[] = {10,10};
CGContextSetLineDash(context, 0, lengths, 2);
CGContextSetRGBStrokeColor(context, 0.65, 0.65, 0.65, 1.0);
CGContextSetLineWidth(context, 2);

CGContextAddArc(context, circleSize.width/2, circleSize.height/2 , circleSize.width/2, 0,2*M_PI,1);
CGContextDrawPath(context,kCGPathStroke);

CGImageRef shadowedCGImage = CGBitmapContextCreateImage(context);
CGContextRelease(context);

UIImage * shadowedImage = [UIImage imageWithCGImage:shadowedCGImage];
CGImageRelease(shadowedCGImage);

[[CCTextureCache sharedTextureCache] addCGImage:[shadowedImage CGImage] forKey:@"circleKey"];
return [CCSprite spriteWithTexture:[[CCTextureCache sharedTextureCache] textureForKey:@"circleKey"]];
}


以上两种,分别用不同的方法来进行绘制,同理,修改内容,也可以绘制各种自己想要的图形,设置自己想要的颜色和透明度
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: