【问题标题】:How to capture SKNode with transparent background?如何捕获具有透明背景的 SKNode?
【发布时间】:2020-07-09 03:30:14
【问题描述】:

现在我用这段代码捕获了:

    CGRect bounds = self.scene.view.bounds;
    UIGraphicsBeginImageContextWithOptions(bounds.size, NO, [UIScreen mainScreen].scale);
    [self.view drawViewHierarchyInRect:bounds afterScreenUpdates:YES];
    UIImage* screenshotImage = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();

这捕捉了整个场景。它工作得很好,但我想要的只是捕获一个放在场景中的具有透明背景的单个 SKNode。有没有办法做到这一点?

编辑:我试过了

self.scene.view.allowsTransparency = YES;
self.scene.backgroundColor = [UIColor clearColor];
self.scene.view.backgroundColor = [UIColor clearColor];

但也没有用。嗯。

【问题讨论】:

标签: objective-c sprite-kit uiimage skspritenode


【解决方案1】:

在您的场景中,将以下触摸实现添加到您的场景中,并添加正确的节点来代替 XXXXX。

override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
    let test = view?.texture(from: XXXXX)
    let testSpriteFromTexture = SKSpriteNode(texture: test)
    testSpriteFromTexture.position = XXXXX.position
    let testImage = test?.cgImage()
    XXXXX.removeFromParent()
    addChild(testSpriteFromTexture)
}

如果您正在捕获动态内容,请注意,您正在捕获的 SKNode 具有不断变化的帧大小。那么在尝试使新节点或图像居中时可能会遇到问题

希望这可行

【讨论】:

    猜你喜欢
    • 2012-01-13
    • 1970-01-01
    • 1970-01-01
    • 2018-05-31
    • 2011-07-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多