gpt4 book ai didi

ios - 以编程方式为带有 alpha channel 的 spritekit 绘制 Sprite ?

转载 作者:行者123 更新时间:2023-12-01 19:04:23 24 4
gpt4 key购买 nike

我正在尝试为 Sprite 套件制作一个应用程序的原型(prototype),如果能够以编程方式绘制我现在需要的 Sprite ,然后再制作实际的 Sprite ,这对我来说是有利的。我做了一个粗略的圆圈,当我使用 renderInContext 转换为 UIImage(或 CGImage)时,它显示在带有黑色背景的 sprite View 上,显然忽略了 alpha channel 。如果我将 UIImage 作为 UIImageView 添加到常规 View ,则 alpha channel 会正确呈现。我想知道我做错了什么,或者是否有解决方法。

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];

最佳答案

当 View 具有 opaque 时,经常会出现这种当您看到黑色 View 背景时的影响。属性错误地设置为 YES实际上是不透明的(通常在以编程方式创建 View 时发生这种情况,默认为 opaque = YES)。

例如,您可以通过设置 opaque 来解决此问题。至NO .

关于ios - 以编程方式为带有 alpha channel 的 spritekit 绘制 Sprite ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20665231/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com