【发布时间】:2013-12-18 18:02:17
【问题描述】:
我正在尝试为 sprite kit 制作一个应用程序原型,如果能够以编程方式绘制我现在需要的 sprite,然后再制作实际的 sprite,这对我来说是有利的。我做了一个粗略的圆圈,当我使用 renderInContext 转换为 UIImage(或 CGImage)时,它显示在带有黑色背景的 sprite 视图上,显然忽略了 alpha 通道。如果我将 UIImage 作为 UIImageView 添加到常规视图,则 alpha 通道会正确呈现。我想知道我做错了什么,或者是否有解决方法。
float rockSize = 100;
UIView* drawingView = [[UIView alloc] initWithFrame:CGRectMake(0,0,100,100)];
drawingView.backgroundColor = [UIColor clearColor];
CALayer* circleLayer = [CALayer layer];
circleLayer.frame = CGRectMake(0,0,rockSize,rockSize);
circleLayer.backgroundColor = [Utils getTiledColorFromColor:[UIColor purpleColor]].CGColor;
circleLayer.cornerRadius = rockSize/2.0;
circleLayer.masksToBounds = YES;
[drawingView.layer addSublayer:circleLayer];
UIGraphicsBeginImageContextWithOptions(CGSizeMake(rockSize, rockSize), NO, [UIScreen mainScreen].scale);
CGContextSetFillColorWithColor(UIGraphicsGetCurrentContext(), [UIColor clearColor].CGColor);
CGContextFillRect(UIGraphicsGetCurrentContext(), CGRectMake(0,0,rockSize,rockSize));
[drawingView.layer renderInContext: UIGraphicsGetCurrentContext()];
UIImage *layerImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
SKSpriteNode *rockNode = [SKSpriteNode spriteNodeWithTexture:[SKTexture textureWithImage:layerImage]];
CGPoint position = CGPointMake(200,100);
rockNode.position = position;
[self addChild:rockNode];
【问题讨论】:
-
我没有使用 sprite-kit,但看起来 sprite 视图的 opaque 属性设置为 YES,没有不透明的背景。
-
成功了,谢谢!如果您将其添加为答案,我会将其标记为已接受。
标签: ios objective-c sprite-kit